1

わかりましたので、ここにはコードはありません。この問題にどのようにアプローチするかについてフィードバックを得たいと思います。

私は本を​​持っており、短い、中程度、または長い本を作成するオプションをユーザーに提供したいと考えています。これにより整数 0,1,2 が作成され、これが定数となり、投稿の長さを定義します。

モデルにショート、ミディアム、ロングの複数のクラスを作成し、そこに定数を設定して、たとえばユーザーが 0 を選択するとクラス short < Book にリンクされるように、ここに座って頭をかきむしっています。これを紙にマッピングしてみましたが、さらに混乱しました。

この問題にどのように取り組むかについてのヘルプやフィードバックは非常に役立ちます。

編集: Sevencats に感謝します。これは、私が線に沿って考えていたことです。簡単な質問ですが、フォーム ビルダー コレクションの選択を使用して、Books.size でこれらの値を定義するにはどうすればよいですか?

0,1,2 の形式で値を列サイズに渡す必要があります。

4

2 に答える 2

1

2 番目の質問に答えるには、collection_select は使いません。私はこのようにします:

Bookモデルで定数を定義します。

SIZES = {0 => 'Small', 1 => 'Medium', 2 => 'Large'}

これで、このハッシュはどこからでも次のようにアクセスできます。

Book::SIZES

と:

Book::SIZES[1]
=> "Medium" 

ビューで選択が必要な場合は、次のようにします。

form_builder.select :size, Book::SIZES.invert

invert、値をキーに、キーを値にします。これは、selectメソッドが必要とするものです。

考えてみると、これをBookモデルに入れることもできます。

SIZES = {SMALL=0 => 'Small', MEDIUM=1 => 'Medium', LARGE=2 => 'Large'}

今、あなたは行くことができBook::SMALL、それはあなたに与えます0.

Bookモデル内からプレフィックスを付ける必要がないため、好きな場所でBook自由に使用できます。MEDIUM

SIZES[ MEDIUM ]
# which is the same as:
SIZES[1]

そしてそれはあなたに与えます"Medium"

于 2013-10-19T19:16:06.987 に答える