0

我正在尝试使用

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

但我无法将正确的参数传递给它。collection元素上的类型应该是什么?(完整使用示例会有所帮助)

我必须使用类似Name=ALand的格式ID=23,就像它是州名和它的代码一样。

因此,对于使用我应该如何向它提供集合对象。

我试过Hash,MapArray

4

2 回答 2

2

的第一个参数options_from_collection_for_select应该是一个任意集合(准确地说是任何具有map方法的对象),例如一个Array.

ArrayHashes为例:

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

当然这是一个愚蠢的例子,因为第二个参数是值的方法,第三个是名称的方法。所以该方法将调用项目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 回答
0

我想,你可以试试 options_for_select。

options_for_select([text1, value1], [text2, value2]])
于 2016-05-18T12:17:58.993 回答