0

私は使用しようとしています

options_from_collection_for_select(collection, value_method, text_method, selected = nil)

しかし、適切なパラメーターを渡すことができません。collection要素の型は何ですか? (完全な使用例は参考になります)

Name=ALとのような形式で使用する必要がありますID=23。州名とコードのように。

したがって、コレクションオブジェクトをどのように提供する必要がありますか。

で試しましたがHashMapArray

4

2 に答える 2

2

の最初のパラメータはoptions_from_collection_for_select、任意のコレクション(メソッドを持つ任意のオブジェクトを正確に取得map)、たとえば。である必要がありArrayます。

esArrayの例:Hash

options_from_collection_for_select([ { :id => 1, :name => 'Foo' }, { :id => 2, :name => 'Bar' } ], 'to_s', 'to_s')

もちろん、これはばかげた例です。2番目のパラメーターは値のメソッドであり、3番目のパラメーターは名前のメソッドであるためです。to_sしたがって、メソッドはアイテムのメソッドを呼び出して、およびをHashフェッチします。これにより、次のようになります。idvalue<option/>

'<option value="{:id=&gt;1, :name=&gt;&quot;Foo&quot;}">{:id=&gt;1, :name=&gt;&quot;Foo&quot;}</option>\n<option value="{:id=&gt;2, :name=&gt;&quot;Bar&quot;}">{:id=&gt;2, :name=&gt;&quot;Bar&quot;}</option>'

適切なオブジェクト、たとえばActiveRecord::Baseオブジェクトを提供する場合:

options_from_collection_for_select(Article.all, 'id', 'title')

それはより良い出力を生成します:

'<option value="28">FooBar</option>\n<option value="29">BarFoo</option>'
于 2012-05-23T11:16:09.040 に答える