如果用户未选中复选框,我怎么能不向控制器发送任何内容
How can I not sending anything to controller if user not checked checkbox
我的表单有两种输入单选按钮和复选框。
我正在使用 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 %>
我的问题是如何只发送选中复选框的answer_id。
来自API Doc
check_box(object_name, method, options = {}, checked_value = "1",
unchecked_value = "0")
check_box
的最后一个参数是 unchecked_value
。当未选中 check_box
时,它会存储您赋予它的值。您将 nil
作为值,因此值存储为 nil
。将其更改为如下所示将解决您的问题
<%= response.check_box :answer_id, {}, answer.id, false %>
我的表单有两种输入单选按钮和复选框。
我正在使用 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 %>
我的问题是如何只发送选中复选框的answer_id。
来自API Doc
check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
check_box
的最后一个参数是 unchecked_value
。当未选中 check_box
时,它会存储您赋予它的值。您将 nil
作为值,因此值存储为 nil
。将其更改为如下所示将解决您的问题
<%= response.check_box :answer_id, {}, answer.id, false %>