【问题标题】:Saving checkbox value in erb - rails将复选框值保存在 erb - rails
【发布时间】:2016-11-12 04:37:31
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    为了解决我遇到的问题,我必须在 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])
    

    【讨论】:

      【解决方案2】:

      您是否在参数中允许tag_id

      params.require(:instructor).permit(:name,
         through_ats_attributes: [:id, :tag_id, :_destroy]
      )
      

      【讨论】:

      • 我应该在哪个文件中允许 params 中的 tag_id?我刚刚尝试将它添加到我的控制器中的方法中,但没有奏效。
      • 在 ``instructors_controller.rb``` 或类似的东西,因为我不知道你的模型名称到底是什么。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      相关资源
      最近更新 更多