如何使用 select_tag 下拉菜单将项目与列表相关联
How to have a select_tag drop down to associate items with lists
我有 Item 和 List 模型,它们都是关联的。列出 has_many
个项目和一个项目 belongs_to
个列表
架构:
create_table "items", force: :cascade do |t|
t.string "name"
t.integer "list_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "completed", default: false
end
create_table "lists", force: :cascade do |t|
t.string "name"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "permission", default: "private"
end
我想创建一个视图(很可能 items/new.html.erb
),因此当用户创建新项目时,将有一个下拉选项供用户选择 select 它属于哪个列表到。开头会有一个预定义的列表(即:List
name
: "Home", "Work", "Personal"
)。用户制作的任何物品都将与这三者中的任何一个相关联。
现在我有一个项目 new.html.erb
视图,其中包含简单的项目名称和 list_id
.
<%= form_for @item do |f| %>
<%= f.label :name %><br>
<%= f.text_area :name, size: "24x12" %><br>
<%= f.label :list_id %><br>
<%= f.text_field :list_id %><br>
<%= f.submit %>
<% end %>
手动输入list_id
很不方便;经过研究,似乎 select_tag
是完成这项工作的最佳表格助手。
如何构建一个显示 3 个下拉列表的 select_tag
,用户可以从中选择将 Item
关联到 List
?
您也可以使用 select
,因为您使用表单来实现此目的。因为你提到 List name
是预定义的,你可以这样做:
<%= f.select :list_id, options_for_select([['Home', 1], ['Work', 2], ['Personal', 3]]), {:include_blank => true} %>
注意: ['Home', 1]
主页的 ID 为 1
,此处 {:include_blank => true}
包含空白。
我有 Item 和 List 模型,它们都是关联的。列出 has_many
个项目和一个项目 belongs_to
个列表
架构:
create_table "items", force: :cascade do |t|
t.string "name"
t.integer "list_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "completed", default: false
end
create_table "lists", force: :cascade do |t|
t.string "name"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "permission", default: "private"
end
我想创建一个视图(很可能 items/new.html.erb
),因此当用户创建新项目时,将有一个下拉选项供用户选择 select 它属于哪个列表到。开头会有一个预定义的列表(即:List
name
: "Home", "Work", "Personal"
)。用户制作的任何物品都将与这三者中的任何一个相关联。
现在我有一个项目 new.html.erb
视图,其中包含简单的项目名称和 list_id
.
<%= form_for @item do |f| %>
<%= f.label :name %><br>
<%= f.text_area :name, size: "24x12" %><br>
<%= f.label :list_id %><br>
<%= f.text_field :list_id %><br>
<%= f.submit %>
<% end %>
手动输入list_id
很不方便;经过研究,似乎 select_tag
是完成这项工作的最佳表格助手。
如何构建一个显示 3 个下拉列表的 select_tag
,用户可以从中选择将 Item
关联到 List
?
您也可以使用 select
,因为您使用表单来实现此目的。因为你提到 List name
是预定义的,你可以这样做:
<%= f.select :list_id, options_for_select([['Home', 1], ['Work', 2], ['Personal', 3]]), {:include_blank => true} %>
注意: ['Home', 1]
主页的 ID 为 1
,此处 {:include_blank => true}
包含空白。