2009-05-05 6 views
14

ハッシュで利用可能な値から選択ボックスを作成する必要があります。事上のメソッドを経由してRails - オブジェクトハッシュから選択タグを作成する

1 => 'State A' 
2 => 'State B' 

利用可能:例えば

、私は「もの」と「こと」は、状態、様々な分野を持っている持っています。

これから選択タグを作成するにはどうすればよいですか?

答えて

48

だけSchrockwellなどを言った:ハッシュ@status_fieldsのためにあなたが書くことができるように

Hash.each |a|は、フォームa = [key, value]の配列を返します。

<%= collection_select('thing', 'status', @status_fields, :first, :last) %> 

また、あなたがして、選択リストと選択リスト値に値ポイントに表示し、キーをたい場合:

<%= collection_select('thing', 'status', @status_fields, :last, :first) %> 

これはthing.statusまたは何によって与えられたオプションを選択しますnilは

あなただけの「2」の所望の選択の指標をある

<%= select_tag('name', options_from_collection_for_select(@status_fields, :first, :last, '2')) %> 

を使用したオブジェクトに関連付けられていない任意の選択を作成したい場合は

を返された場合

PS:元の投稿やコメントを修正するには十分な評判がありません

+2

を使用するか、<%= select_tag( 'name'、options_for_select(["Dollar"、 "$"]、["Kroner"、 "DKK"]])% – montrealmike

7

select helper methodは、{ text_displayed_in_select => select_value }という形式のハッシュを受け入れるので、そのハッシュはinvertになります。


8

あなたは

select "foo", "bar", @hash_object 

または

select "foo", "bar", @hash_object.map { |h| [h.key, h.value] } 

ような何かを行うことができ、私はおそらく

4

Hash.each |a|が返す値にキーポイントを作るために最初にあなたのハッシュを反転させたいですa = [key, value]という形式の配列ですので、ハッシュの場合は@status_fields次のように記述することができます:

<%= collection_select('thing', 'status', @status_fields, :first, :last) %> 

を別の方法として、あなたが選択リスト値に選択リストに表示するためのキーと値のポイントをたい場合は、次のようになります

<%= collection_select('thing', 'status', @status_fields, :last, :first) %> 
+0

だから、選択した価値をどのように伝えたらいいのでしょうか? –

+0

ドキュメントでは、「インスタンスオブジェクトのメソッド呼び出しから返された値が選択されます」と記載されています。したがって、最初の引数として 'thing'を渡す代わりに、オブジェクト@thingの実際のインスタンスを渡してみてください。 – Schrockwell

関連する問題