2012-06-20 3 views
0

Я хотел бы использовать метод внутри form_for в rails для создания тега select с параметрами, в которых значение параметров исходит из одного массива, а опции, заключенные в теги опций, поступают из другого массив.Использование метода select в form_for for rails

Например, первый вариант был бы:

<option value = Array1[0]> Array2[0] </option> 

Как мне это сделать? Могу ли я использовать «выбрать», такие как:

= form_for @activity do |f| 
    = f.select(Array1, Array2, {:selected => nil, :prompt => 'Select Stage'}) 

Я не мог получить что-то вроде этого рабочего, хотя этот формат, казалось, в соответствии с options_for_select, как описано в рельсах API на api.rubyonrails.org.

ответ

0

Попробуйте это:

= f.select(:method, Array2.zip(Array1), { :selected => nil, :prompt => 'Select Stage' }) 

Метод zip будет объединить два массива, чтобы сделать один двумерный массив.

Так, например, [1,2,3].zip([4,5,6]) вернется [[1,4], [2,5], [3,6]].

select может интерпретировать это как список текстов вариантов и значений параметров.

Учитывая [['Male', 'm'], ['Female', 'f']], выберите вернется

<option value="m">Male</option> 
<option value="f">Female</option> 
+0

Это сработало! Единственное, чтобы получить его, как я показал в вопросе, был порядок Array2.zip (Array1). Если вы включите это, я приму и поддержу. Благодаря! – John

+0

Готово. И добавил более подробное объяснение. –