rails:2046
From: Masahiro Utsumi <utsumi@t...>
Date: Wed, 28 Feb 2007 19:06:40 +0100
Subject: [rails:2046] Re: コード値の表示時の変換方式
内海@ベルギーです
エレガントな方法としてはジャンルもテーブルにしてしまって、
:select => 'music.genre, genres.name',
:joins => 'INNER JOIN genres ON musics.genre = genres.id'
として説明もデータベースから取り込む方法でしょうか。
もしジャンルの数が少なくて増えたり減ったりしないというのであれば
ハッシュとして持つのはどうでしょうか。
class Music < ActiveRecord::Base
GENRES = {
1 => "邦楽",
2 => "洋楽",
3 => "クラシック",
4 => "その他"
}.freeze
end
View内
<%= Music::GENRES[music.genre] %>
こうしておけば、データ入力のところでセレクトドロップダウンにもす
ぐに使えます。
<%= select 'music', 'genre', Music::GENRES.invert %>
いかがでしょうか?
モデル内で次のような関数を作る方がより良い解決策でしょうか?
def genre_name
GENRES[:genre]
end
On 2007/02/28, at 17:50, YOKOYAMA, Hideyuki wrote:
>
> 横山です
> いつもお世話になっております
>
> 既出でしたら申し訳ありません
> DB にコードで入っている値を
> 意味のある表示にしたい場合は
> どのような方式がエレガントでしょうか?
>
> 例)
> musics という table の genre :integer というフィー
> ルドには
> 1:邦楽 2:洋楽 3:クラシック 4:その他
> みたいな感じでどれかの値が入っています
>
> find 等で取得した model を view で表示する場合に
> いちいち if や case で変換して表示するのはダサいです
> (genre == 1 だったら "邦楽"みたいな)
>
> helper や model で genre.to_desc() みたいなメソッ
> ドか
> もしくは何か別の方法でマッピングを定義することは出来ないでしょ
> うか?
>
>
> /*----
> 横山 秀行
> YOKOYAMA, Hideyuki <yokoyama@c...>
>
> -- PGP PUBLIC KEY SERVER URL --
> http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x089F75BE
> ----*/
>
>
> --
> ML: rails@r...
> 使い方: http://QuickML.com/
--
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... ]