Rails - form_for select 显示我来自数据库的类别
Rails - form_for select that show my categories from db
我有与我的类别关联的页面
现在我有一个正在创建 Pages
的表单
<%= form_for @page do |f| %>
<table>
<tr>
<td><%= f.label :title %></td>
<td><%= f.text_field :title %></td>
</tr>
<tr>
<td><%= f.label :desc %></td>
<td><%= f.text_field :desc %></td>
</tr>
<tr>
<td><%= f.label :category_id %></td>
<td><%= f.select(Page.all, :category_id, :title) %></td>
</tr>
</table>
<%= f.submit %>
<% end %>
我正在尝试创建一个 select 下拉列表,它将显示我从我的数据库中获得的所有类别,在我 select 之后,它将分配我正在创建的页面转到我从 select 下拉列表
中选择的类别
您需要根据此更改您的 select 标签。
<%= form_for @page do |f| %>
<table>
<tr>
<td><%= f.label :title %></td>
<td><%= f.text_field :title %></td>
</tr>
<tr>
<td><%= f.label :desc %></td>
<td><%= f.text_field :desc %></td>
</tr>
<tr>
<td><%= f.label :category %></td>
<td><%= f.select(:category_id, options_from_collection_for_select(Category.all, :category_id, :title)) %></td>
</tr>
你应该使用
f.select :category, Category.pluck(:title, :id)
请注意,如果您的 rails 版本较低,那么 4.x 您只能在一列中使用 pluck
。
对于 Rails3(或者可能更少),如果你有一个 Category
模型,你可以简单地做。
f.select(:category, Category.select([:id,:title]).map { |c| [ c.id, c.title ] } , { include_blank: true })
collection_select
是你需要的:
<%= form_for @page do |f| %>
<%= f.collection_select :category_id, Category.all, :id, :title %>
<%= f.submit %>
<% end %>
我有与我的类别关联的页面
现在我有一个正在创建 Pages
<%= form_for @page do |f| %>
<table>
<tr>
<td><%= f.label :title %></td>
<td><%= f.text_field :title %></td>
</tr>
<tr>
<td><%= f.label :desc %></td>
<td><%= f.text_field :desc %></td>
</tr>
<tr>
<td><%= f.label :category_id %></td>
<td><%= f.select(Page.all, :category_id, :title) %></td>
</tr>
</table>
<%= f.submit %>
<% end %>
我正在尝试创建一个 select 下拉列表,它将显示我从我的数据库中获得的所有类别,在我 select 之后,它将分配我正在创建的页面转到我从 select 下拉列表
中选择的类别您需要根据此更改您的 select 标签。
<%= form_for @page do |f| %>
<table>
<tr>
<td><%= f.label :title %></td>
<td><%= f.text_field :title %></td>
</tr>
<tr>
<td><%= f.label :desc %></td>
<td><%= f.text_field :desc %></td>
</tr>
<tr>
<td><%= f.label :category %></td>
<td><%= f.select(:category_id, options_from_collection_for_select(Category.all, :category_id, :title)) %></td>
</tr>
你应该使用
f.select :category, Category.pluck(:title, :id)
请注意,如果您的 rails 版本较低,那么 4.x 您只能在一列中使用 pluck
。
对于 Rails3(或者可能更少),如果你有一个 Category
模型,你可以简单地做。
f.select(:category, Category.select([:id,:title]).map { |c| [ c.id, c.title ] } , { include_blank: true })
collection_select
是你需要的:
<%= form_for @page do |f| %>
<%= f.collection_select :category_id, Category.all, :id, :title %>
<%= f.submit %>
<% end %>