RoR select_tag значение по умолчанию и опции - PullRequest
42 голосов
/ 03 августа 2010

Как установить значение по умолчанию с помощью select_tag и как сохранить параметры открытыми при загрузке страницы?

Ответы [ 5 ]

107 голосов
/ 03 августа 2010

Если вы используете select_tag без какого-либо другого помощника, вы можете сделать это в html:

select_tag "whatever", "<option>VISA</option><option selected=\"selected\">MasterCard</option>"

Или с options_for_select:

select_tag "whatever", options_for_select([ "VISA", "MasterCard" ], "MasterCard")

Или с options_from_collection_for_select:

select_tag [SELECT_FIELD_NAME], options_from_collection_for_select([YOUR_COLLECTION], [NAME_OF_ATTRIBUTE_TO_SEND], [NAME_OF_ATTRIBUTE_SEEN_BY_USER], [DEFAULT_VALUE])

Пример:

select_tag "people", options_from_collection_for_select(@people, 'id', 'name', '1')

Примеры: select_tag документ , options_for_select документ и options_from_collection_for_select документ .

2 голосов
/ 19 декабря 2017

Попробуйте:

<%= select_tag(:option, options_for_select([["Option 1",1],["Option 2",2],["Option 3",3]], params[:option] ), class:"select") %>

отлично работает в рельсах 5.

2 голосов
/ 05 декабря 2013

Для options_for_select

<%= select_tag("products_per_page", options_for_select([["20",20],["50",50],["100",100]],params[:per_page].to_i),{:name => "products_per_page"} ) %>

Для параметров из коллекции для выбора

<%= select_tag "category","<option value=''>Category</option>" +  options_from_collection_for_select(@store_categories, "id", "name",params[:category].to_i)%>

Обратите внимание, что выбранное вами значение должно иметь значение типа.т.е. если значение имеет целочисленный формат, то выбранный параметр значения также должен быть целочисленным.

0 голосов
/ 12 июня 2016

Уже объяснили, попробую привести пример для достижения того же без options_for_select

пусть список выбора будет

select_list = { eligible: 1, ineligible: 0 }

Таким образом, следующий код приводит к

<%= f.select :to_vote, select_list %>

<select name="to_vote" id="to_vote">
  <option value="1">eligible</option>
  <option value="0">ineligible</option>
</select>

Таким образом, чтобы сделать параметр выбранным по умолчанию, мы должны использовать selected: значение .

<%= f.select :to_vote, select_list, selected: select_list.can_vote? ? 1 : 0 %>

если can_vote? возвращает true, он устанавливает selected: 1 , тогда будет выбрано первое значение, а второе.

select name="driver[bca_aw_eligible]" id="driver_bca_aw_eligible">
  <option value="1">eligible</option>
  <option selected="selected" value="0">ineligible</option>
</select>

если опции выбора - это просто список массивов, а не hast, тогда выбранным будет просто значение, которое будет выбрано, например, если

select_list = [ 'eligible', 'ineligible' ]

Теперь выбранный просто займет

<%= f.select :to_vote, select_list, selected: 'ineligible' %>
0 голосов
/ 16 мая 2013

другой вариант (если вам нужно добавить атрибуты данных или другое)

= content_tag(:select) do
  - for a in array
    option data-url=a.url selected=(a.value == true) a.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...