Ruby on rails: выберите меню параметров с атрибутом значения по умолчанию - PullRequest
6 голосов
/ 05 мая 2010

Мне нужно создать меню выбора со значением по умолчанию в списке <options>. Вот как мне это нужно выглядит.

<select name="menu[parent_id]" id="menu_parent_id">
 <option value="0">==None==</option>
 <option value="34">TEST</option>
</select>

В настоящее время я использую этот select помощник в моей форме

   <%= f.select(:parent_id, @parent_menus.collect {|p| [ p.name, p.id ] }, {:include_blank => '==None=='})%>

приведенный выше код производит это; (value="")

<select name="menu[parent_id]" id="menu_parent_id">
 <option value="">==None==</option>
 <option value="34">TEST</option>
</select>

Кто-нибудь здесь может показать мне способ добавить value="0" в список опций?

Ответы [ 4 ]

9 голосов
/ 05 мая 2010
<%= f.select(:parent_id, [["==None==", 0]] + @parent_menus.collect {|p| [ p.name, p.id ] }) %>
1 голос
/ 03 октября 2012

Думаю, я бы добавил это любому, кто хочет сделать выбранное по умолчанию значение , которое является одним из объектов в раскрывающемся списке , в отличие от значения "нет". то есть вы редактируете форму, для которой выбрано предыдущее значение, и вы не хотите терять это предыдущее значение на странице редактирования:

Предположим, у вас есть массив родителей, хранящихся в @parents, и ваша форма привязана к объекту с именем @my_messed_up_family, а у @my_messed_up_family есть один «отец»:

= f.label :parent_id, "Choose which of your parents is your father?

= f.select :parent_id, options_from_collection_for_select(@parents.sort_by {|n| n.name}, "id", "name", :selected=>@my_messed_up_family.father.id)
1 голос
/ 05 мая 2010

Попробуйте

<%= f.select(:parent_id, options_for_select(["==None==", 0] + @parent_menus.collect {|p| [ p.name, p.id ] }, 0)) %>
0 голосов
/ 05 мая 2010

Я не знаю, это Руби или нет, но это точно сработает

<%= f.select(:parent_id, "<option value='0'>Please select</option>"+options_for_select(@parent_menus.collect {|p| [ p.name, p.id ] }))%>

Редакция. Для предварительно выбранного в соответствии со значением save в базе данных я предполагаю, что @user - ваш объект, содержащий значение базы данных для следующего примера.

<%= f.select(:parent_id, "<option value='0'>Please select</option>"+options_for_select(@parent_menus.collect {|p| [ p.name, p.id ] }, @user.id ))%>
...