Как установить значение по умолчанию с помощью select_tag
, и как я могу сохранить открытые параметры при загрузке страницы?
RoR select_tag значение по умолчанию и параметры
Ответ 1
Если вы используете 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
Для 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)%>
Обратите внимание, что выбранное значение, которое вы указываете, должно иметь значение типа. то есть, если значение находится в целочисленном формате, то выбранный параметр значения также должен быть целым.
Ответ 3
Попробуйте следующее:
<%= select_tag(:option, options_for_select([["Option 1",1],["Option 2",2],["Option 3",3]], params[:option] ), class:"select") %>
отлично работает в рельсах 5.
Ответ 4
другой вариант (если вам нужно добавить атрибуты данных или другие)
= content_tag(:select) do
- for a in array
option data-url=a.url selected=(a.value == true) a.name
Ответ 5
Это уже объяснено, попробует дать пример для достижения того же без 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, он устанавливает : 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' %>