2012-05-23 3 views
0

Я пытаюсь использоватьИспользование options_from_collection_for_select

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

Но я не могу передать надлежащий параметр к нему. Что должно быть типа на collection элемент? (Образец для полного использования будет полезен)

Я должен использовать его в формате Name=AL и ID=23, как будто это имя штата и код.

Итак, для использования, как я должен предоставить объект коллекции к нему.

Я попытался с Hash, Map и Array

ответ

2

1-й параметром options_from_collection_for_select должен быть произвольным набором (accuratley любых объектов, которые имеют метод 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 и value для <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>' 
+0

Что Article.All, я получаю ошибки при слежении неопределенный метод 'имя» для { "имя" => "AL", "ID" => 1}: Hash – ANUP

+0

'Article.all' будет получать все статьи из БД, это просто пример. Вы получаете ошибку, потому что метод 'name' не существует для объектов Hash. –

0

Думаю, вы можете попробовать options_for_select.

options_for_select([text1, value1], [text2, value2]]) 
Смежные вопросы