我有一个包含4个属性:name, :characteristic1 ,:characteristic2,:characteristic3
的模型Fruit。在水果表:characteristic1 ,:characteristic2,:characteristic3
字段中将从6个复选框中接收值(因为我不想将所有6个字段添加到水果表中),其形式是用户必须只选择其中的3个。如何我获取复选框中选中的值并将其插入:characteristic1 ,:characteristic2,:characteristic3
,而不是伪造:接受输入为text_field的名称字段?我确定这必须在控制器中完成但我不知道如何。谢谢你提前
形式
<%= form_for @fruit ,:url=>{:action =>"create"} do |f| %>
<%=f.text_field :name %>
<%=f.fields_for :characteristics do |c| %>
<!--Characteristics checkboxes -->
<%end%>
<%=f.submit "submit" %>
答案 0 :(得分:1)
我会告诉你创建2个新模型:特色和FruitCharacteristic
水果具有许多特征,通过果实特征
阅读此api页面以找到解决表单问题的很酷的东西
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>
答案 1 :(得分:1)
由于您希望限制用户仅选择3个类别,因此最好在“characteristic1”,“characteristic2”和“characteristic3”之类的行中提供3个选择框/ 3组复选框。然后在控制器中,您可以使用params [:fruit] [:characteristic1]等来访问这些值。