我有一个嵌套表单,可以将信息保存到三个不同的模型中。表单的一部分使用复选框,应该保存值1-5。但是,即使选中复选框,表单也会返回值0.我尝试了几种不同的代码变量来设置选中的值。任何帮助将非常感激。表单代码的一部分如下:
<%= form_for @newinstructor do |f|%>
<%= f.text_field :first_name %>
<%= f.text_field :last_name %>
<%= f.fields_for :through_ats do |tag_field| %>
<%= label_tag("What categories does your activity fit into?") %><br>
<%= label_tag(:tag, "Cooking") %>
<%= tag_field.check_box(:tag_id, :value => 1) %>
<%= label_tag(:tag, "Art") %>
<%= tag_field.check_box(:tag_id, :value => 2) %>
<%= label_tag(:tag, "Music") %>
<%= tag_field.check_box(:tag_id, :value => 3) %>
<%= label_tag(:tag, "Outdoors") %>
<%= tag_field.check_box(:tag_id, :value => 4) %>
<%= label_tag(:tag, "Food") %>
<%= tag_field.check_box(:tag_id, :value => 5) %>
<% end %>
<%= f.submit %>
<% end %>
答案 0 :(得分:0)
您是否允许tag_id
使用params?
params.require(:instructor).permit(:name,
through_ats_attributes: [:id, :tag_id, :_destroy]
)
答案 1 :(得分:0)
为了解决我遇到的问题,我必须在tag_field.checkbox中唯一地定义每个符号,然后在params中单独地要求/允许它们
所以在我提出的形式:
<%= label_tag("Please check off the categories your activity fits into.") %><br>
<%= label_tag(:tag, "Cooking") %>
<%= tag_field.check_box(:cooking) %>
<%= label_tag(:tag, "Art") %>
<%= tag_field.check_box(:art) %>
而不是:
<%= label_tag("What categories does your activity fit into?") %><br>
<%= label_tag(:tag, "Cooking") %>
<%= tag_field.check_box(:tag_id, :value => 1) %>
<%= label_tag(:tag, "Art") %>
<%= tag_field.check_box(:tag_id, :value => 2) %>
并在控制器中:
params.require(:instructor).permit(through_ats: [:cooking, :art, :music, :outdoors, :food])
而不是:
params.require(:instructor).permit(through_ats: [:id, :tag_id])