Как установить "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
Ответы
Ответ 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
выбранным независимо от текущей выбранной модели.