我正在尝试使用
options_from_collection_for_select(collection, value_method, text_method, selected = nil)
但我无法将正确的参数传递给它。collection
元素上的类型应该是什么?(完整使用示例会有所帮助)
我必须使用类似Name=AL
and的格式ID=23
,就像它是州名和它的代码一样。
因此,对于使用我应该如何向它提供集合对象。
我试过Hash
,Map
和Array
我正在尝试使用
options_from_collection_for_select(collection, value_method, text_method, selected = nil)
但我无法将正确的参数传递给它。collection
元素上的类型应该是什么?(完整使用示例会有所帮助)
我必须使用类似Name=AL
and的格式ID=23
,就像它是州名和它的代码一样。
因此,对于使用我应该如何向它提供集合对象。
我试过Hash
,Map
和Array
的第一个参数options_from_collection_for_select
应该是一个任意集合(准确地说是任何具有map
方法的对象),例如一个Array
.
Array
以Hash
es为例:
options_from_collection_for_select([ { :id => 1, :name => 'Foo' }, { :id => 2, :name => 'Bar' } ], 'to_s', 'to_s')
当然这是一个愚蠢的例子,因为第二个参数是值的方法,第三个是名称的方法。所以该方法将调用项目to_s
上的方法Hash
来获取id
和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')
它将产生更好的输出:
'<option value="28">FooBar</option>\n<option value="29">BarFoo</option>'
我想,你可以试试 options_for_select。
options_for_select([text1, value1], [text2, value2]])