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

Как установить "selected" в select_tag/options_from_collection_for_select

Я искал stackoverflow в течение почти двух часов, просматривая похожие вопросы, но ответы просто не работают.

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

<%= 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

4b9b3361

Ответ 1

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

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

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