rails:2048
From: Masahiro Utsumi <utsumi@t...>
Date: Wed, 28 Feb 2007 23:52:12 +0100
Subject: [rails:2048] Re: コード値の表示時の変換方式
内海@ベルギーです。 On 2007/02/28, at 22:35, YOKOYAMA, Hideyuki wrote: > |モデル内で次のような関数を作る方がより良い解決策でしょうか? > | def genre_name > | GENRES[:genre] > | end > > この関数の使用方法の例は > controller で > @m = Music.find(:first) > view で > <%= @m.genre_name %> > という感じでしょうか? > これだと見た目もすっきりでいい感じです > さらに to_s や to_i と同じように > <%= @m.genre.to_desc %> > と出来ればベストのイメージです > でも Ruby では > def genre.to_desc > GENRES[:genre] > end > とは確か定義できないんですよね > (素人ですみません) > なんらかの方法で上記の > genre.to_desc > は定義可能なんでしょうか? ジャンルクラスを定義(modelを作る)したらどうでしょうか? models/genre.rb class Genre GENRES = { 1 => "邦楽", 2 => "洋楽", 3 => "クラシック", 4 => "その他" }.freeze attr_reader :id def initialize(genre) @id = genre end def to_desc return GENRES[@id] end end それで models/music.rb で def genre を作成し て、:integerではなく new Genre()してそのリファレンスを返す。そうすれば @m.genre.to_desc で アクセスできるようになりますよね。 ただし、元の数字を参照したい 時は @m.genreではなく@m.genre.id としなければいけなくなります が。 もっといい方法ありますでしょうか?>識者の方々。 -- ML: rails@r... 使い方: http://QuickML.com/
2041 2007-02-28 05:47 [hisano@s... ] 多段のlayoutの作成方法 2042 2007-02-28 08:03 ┗[moriq@m... ] 2043 2007-02-28 09:01 ┗[hisano@s... ] 2044 2007-02-28 17:50 ┗[yokoyama@c... ] コード値の表示時の変換方式 2045 2007-02-28 18:09 ┣[shachi@j... ] 2046 2007-02-28 19:06 ┗[utsumi@t... ] 2047 2007-02-28 22:35 ┗[yokoyama@c... ] -> 2048 2007-02-28 23:52 ┣[utsumi@t... ] 2049 2007-03-01 00:15 ┃┣[utsumi@t... ] 2052 2007-03-01 00:24 ┃┃┗[yokoyama@c... ] 2050 2007-03-01 00:19 ┃┗[yokoyama@c... ] 2051 2007-03-01 00:23 ┗[moriq@m... ] 2053 2007-03-01 00:30 ┣[moriq@m... ] 2055 2007-03-01 16:51 ┗[yokoyama@c... ] 2056 2007-03-01 18:59 ┗[moriq@m... ]