代码之家  ›  专栏  ›  技术社区  ›  DrNutsu

如果用户未选中复选框,我如何不向控制器发送任何内容

  •  1
  • DrNutsu  · 技术社区  · 10 年前

    我有一个表单,有两种输入单选按钮和复选框。 我正在使用 accepts_nested_attributes_for 执行嵌套属性 所以,对于单选按钮,它工作正常

    <%= questions.each do |question| %> 
      <%= f.fields_for :user_response do |response| %>
       <% question.answers.each do |answer| %>
        <%= response.radio_button :answer_id, answer.id %>
       <% end %>
      <% end %>
    <% end  %>
    

    它将发送用户选择的选项的answer_id

    但是,在复选框上

    <%= questions.each do |question| %> 
     <% question.answers.each do |answer| %>
      <%= f.fields_for :user_response do |response| %>
       <%= response.check_box :answer_id, {}, answer.id, nil %>
      <% end %>
     <% end %>
    <% end  %>
    

    它有一些问题,当用户没有选中复选框时,它仍然会发送具有零值answer_id的数据,因为 <%= response.check_box :answer_id, {}, answer.id, nil %>

    我的问题是如何才能只发送选中复选框的answerid。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Pavan Cesar    10 年前

    API Doc

    check_box(对象名,方法,选项={},checked_value=“1”, 未选中的值=“0”)

    check_box unchecked_value 。它存储当 复选框(_B) 未选中。你有 nil 作为值,因此值存储为 。将其更改为如下所示将解决您的问题

    <%= response.check_box :answer_id, {}, answer.id, false %>