在erb - rails中保存复选框值

时间:2016-07-09 21:23:00

标签: ruby-on-rails ruby forms checkbox nested

我有一个嵌套表单,可以将信息保存到三个不同的模型中。表单的一部分使用复选框,应该保存值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 %>

2 个答案:

答案 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])