1

我有一个具有 4 个属性的模型 Fruit :name, :characteristic1 ,:characteristic2,:characteristic3。在水果表中:characteristic1 ,:characteristic2,:characteristic3的字段将接收来自 6 个复选框的值(因为我不想将所有 6 个字段添加到水果表中),用户只需选择其中的 3 个。我将如何选择值在复选框中并将它们插入:characteristic1 ,:characteristic2,:characteristic3,不要忘记接受输入为 text_field 的:name 字段?我确信这必须在控制器中完成,但我不知道如何。提前谢谢你。

形式

      <%= form_for @fruit ,:url=>{:action =>"create"} do |f| %>
      <%=f.text_field :name %>

      <%=f.fields_for :characteristics do |c| %>
        <!--Characteristics checkboxes -->
        <%end%>
       <%=f.submit "submit" %>
4

2 回答 2

1

我会告诉你创建 2 个新模型:Characteristic 和 FruitCharacteristic

水果通过水果会有很多特征

并阅读这个 api page 找到一些很酷的东西来解决表单问题

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

更新: 这应该适用于多对多

<ul>
   <% Characteristic.all.each do |c| %>
      <li><%= check_box_tag :characteristics_ids, c.id, @fruit.characteristics.include?(c), :name => 'fruit[characteristics_ids][]' %>
      <%= label_tag :characteristics_ids, c.name %></li>
   <% end %>
</ul>
于 2012-04-27T20:37:05.943 回答
1

由于您希望限制用户仅选择 3 个类别,因此最好沿“characteristic1”、“characteristic2”和“characteristic3”之类的行提供 3 个选择框/3 组复选框。然后在控制器中,您可以使用 params[:fruit][:characteristic1] 等简单地访问这些值。

于 2012-04-28T16:18:26.777 回答