0

我有一个模型“启动”,我有另一个模型“类别”。这两个表是关联的。

我想通过 Startup 的形式调用 Categoria 的数据,这个类别用一个复选框显示。在表格启动表格中,我有categorie_id。这是代码

<%= form_for(@startup) do |f| %>
  <% if @startup.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@startup.errors.count, "error") %> prohibited this startup from being saved:</h2>

      <ul>
      <% @startup.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :description %><br />
    <%= f.text_area :description %>
  </div>
  <div class="field">
    <%= f.collection_select :round_id, Round.order(:name), :id, :name, include_blank: true %>
  </div>
  <div class="field">
    <%= f.label :category %><br />
    <%= f.text_field :category_id %>
  </div>

  <div class="field">
    <%= f.collection_select :country_id, Country.order(:name), :id, :name, include_blank: true %>
  </div>


  <div class="actions">
    <%= f.submit %>   </div> <% end %>

如何使用复选框在表单中显示类别的数据?

任何的想法。

pdt:我的英语真的很糟糕。

4

2 回答 2

1

如果 Startup 只能有一个 Category,您可以在视图中这样做:

<div class="field">
  <%= f.label :category %><br />
  <%= f.collection_select :category_id, Category.all, :id , :name %>
</div>

这将输出一个包含所有类别的下拉菜单。确保 Category 模型具有属性name

正如您所说,Startup 属于一个 Category,因此使用单选按钮(此处的复选框用于多个关系,意味着您可以选择多个类别):

<div class="field">
  <% Category.all.each do |category| %>
    <%= f.radio_button :category_id, category.id %>
    <%= f.label :category_id, category.name %>
  <% end %>
</div>

您可能必须添加<br />标签和 html 选项以使其看起来更好。

于 2012-12-05T16:41:48.727 回答
0

正如 Yoshiji 先生所说,您可以使用:

它将在屏幕上显示类别名称,发送的值将是 id。

您可以在此处找到更多详细信息:http: //api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

我建议您使用 simple_form gem 来生成您的表单。这是一个非常简单的使用和定制的宝石!看它 ;)

于 2012-12-05T17:03:55.110 回答