Как установить «выбранный» в select_tag / options_from_collection_for_select - PullRequest
13 голосов
/ 17 июля 2011

Я искал стекопоток в течение почти 2 часов, сейчас отвечаю на подобные вопросы, но ответы просто не работают.

У меня есть следующий код:

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name") %>

Я бы хотел отобразить выбранный ранее вариант вместо выбранного по умолчанию первого тега.

В других вопросах они предложили добавить следующее (ни один из них не работает).

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name", "1") %>

Или:

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name", @models.first.id) %>

пс. Я использую Rails 3.1.RC4

1 Ответ

27 голосов
/ 17 июля 2011

Предполагая, что в дополнение к @models, который содержит полный список, у вас также есть @model, который содержит текущую запись, тогда вы можете сделать следующее:

<%= 
  select_tag "name_dropdown", 
  options_from_collection_for_select(@models, "friendly_id", "name", @model.id) 
%>

Как правило, четвертый параметр options_from_collection_for_select(...) должен содержать идентификатор элемента, который вы хотите выбрать. Ваш второй пример кода заставляет выбранный идентификатор каждый раз равняться 1, а третий отправленный вами пример всегда делает первый выбранный элемент в @models независимо от текущей выбранной модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...