2

我有与我的类别相关联的页面
现在我有一个正在创建页面的表单

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

我正在尝试创建一个选择下拉列表,它将向我显示我从数据库中获得的所有类别,在我选择一个之后,它会将我正在创建的页面分配给我从选择下拉列表中选择的类别

4

4 回答 4

4

你应该使用

f.select :category, Category.pluck(:title, :id)

请注意,如果您的 rails 版本较低,则 4.x 只能pluck与一列一起使用。

于 2016-02-16T07:22:46.827 回答
1

您需要根据此更改您的选择标签。

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

于 2016-02-16T07:20:24.043 回答
0

对于Rails3(或者可能更少),如果你有一个Category模型,你可以简单地做。

f.select(:category, Category.select([:id,:title]).map { |c| [ c.id, c.title ] } , { include_blank: true })
于 2016-02-16T07:24:14.690 回答
0

collection_select是你需要的:

<%= form_for @page do |f| %>
  <%= f.collection_select :category_id, Category.all, :id, :title %>          
  <%= f.submit %>
<% end %>
于 2016-02-16T11:15:35.680 回答