Подтвердить что ты не робот

RoR select_tag значение по умолчанию и параметры

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

4b9b3361

Ответ 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' %>