如何在select_tag/options_from_collection_for_select中设置"selected"

imj*_*mjp 14 ruby-on-rails

我一直在搜索stackoverflow近2个小时,现在经历类似的问题,但答案似乎不起作用.

我有以下代码:

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name") %>
Run Code Online (Sandbox Code Playgroud)

我想显示我之前选择的选项,而不是默认情况下转到第一个标签.

在其他问题中,他们建议添加以下内容(它们都不起作用).

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name", "1") %>
Run Code Online (Sandbox Code Playgroud)

要么:

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name", @models.first.id) %>
Run Code Online (Sandbox Code Playgroud)

PS.我正在使用Rails 3.1.RC4

Dyl*_*kow 27

假设除了@models包含完整列表的那个,你还有@model包含当前记录的那个,那么你可以做以下事情:

<%= 
  select_tag "name_dropdown", 
  options_from_collection_for_select(@models, "friendly_id", "name", @model.id) 
%>
Run Code Online (Sandbox Code Playgroud)

基本上,第四个参数options_from_collection_for_select(...)应该包含您要选择的项目的ID.您的第二个代码示例每次强制所选的id为1,并且您发布的第三个样本始终使@models所选的第一个项目,无论当前选择的实际模型如何.

  • 谢谢man,我通过输入`@ model.friendly_id`而不是`@ model.id`来修复它:`<%= select_tag"name_dropdown",options_from_collection_for_select(@models,"friendly_id","name",@ model.friendly_id) %>` (2认同)