Rails select_tag - установка include_blank и выбор значения по умолчанию - PullRequest
7 голосов
/ 24 июня 2011
select_tag :country_id, options_from_collection_for_select(Country.order('priority desc, name asc'), "id", "name"), { :prompt => 'Select a country', :include_blank => 'None' } %> 

Делает как положено, кроме :include_blank => 'None'.Оказывает пустую опцию.Вот так:

<option value=""></option>

Второй, с select_tag.Как мне указать значение по умолчанию.Например, если мне нужно поле выбора, чтобы выбрать конкретную страну.Я пытался добавить :selected => Country.first безрезультатно:

<%= select_tag :country_id, options_from_collection_for_select(Country.order('priority desc, name asc'), "id", "name"), { :prompt => 'Select` a country', :include_blank => 'None', :selected => Country.first } %>

Выше всегда выбирается "Выберите страну".

Почему?

1 Ответ

3 голосов
/ 15 июня 2015

Пустое значение

Я не думаю, что этому уделяется достаточно внимания на других сообщениях:

include_blank для select_tag не учитывает переданную ему строку,Он только интерпретирует его как значение true / false.

Чтобы задать пустое значение для select_tag с определенной строкой, необходимо использовать prompt.

Выбранное значение

Поскольку select_tag не принадлежит объекту, как и select, необходимо указать выбранное значение как часть параметров.передать выбранное значение в options параметр select_tag.

. В вашем случае вы используете options_from_collection_for_select, чтобы помочь сгенерировать эти опции.Этот метод принимает четвертый параметр , который указывает, какую опцию следует выбрать.

options_from_collection_for_select( 
  Country.order('priority desc, name asc'), 
  :id, 
  :name,
  Country.find_by_name('Canada')
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...