我正在尝试使用
options_from_collection_for_select(collection, value_method, text_method, selected = nil)
但我无法将适当的参数传递给它。应该在collection
元素上输入什么内容? (完整使用的样本将有所帮助)
我必须使用Name=AL
和ID=23
这样的格式,就像国家名称和代码一样。
因此,我应该如何向它提供集合对象。
我尝试过使用Hash
,Map
和Array
答案 0 :(得分:2)
options_from_collection_for_select
的第一个参数应该是一个任意集合(准确地使用map
方法的任何对象),例如Array
。
Array
Hash
的示例:
options_from_collection_for_select([ { :id => 1, :name => 'Foo' }, { :id => 2, :name => 'Bar' } ], 'to_s', 'to_s')
当然这是一个愚蠢的例子,因为第二个参数是值的方法,第三个是名称的方法。因此,该方法会调用to_s
项上的Hash
方法来获取id
的{{1}}和value
,因此会生成:
<option/>
如果您提供适当的对象,例如'<option value="{:id=>1, :name=>"Foo"}">{:id=>1, :name=>"Foo"}</option>\n<option value="{:id=>2, :name=>"Bar"}">{:id=>2, :name=>"Bar"}</option>'
个对象:
ActiveRecord::Base
它会产生更好的输出:
options_from_collection_for_select(Article.all, 'id', 'title')
答案 1 :(得分:0)
我想,您可以尝试options_for_select。
options_for_select([text1, value1], [text2, value2]])