[前][次][番号順一覧][スレッド一覧]

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...          ]