Ruby on rails 复选框帮助程序是否发送额外参数?
但是,如果我关闭隐藏字段,当前面的框未选中时,我的表单会“窃取”彼此的数据,从而导致其他问题。例如,在这里,我未选中第一个表单: 参数:{“utf8”=>“✓", "真实性令牌“=>”qszyk+q+pJ77WuDh2/K2S8lTuBD99DptwqeEdDI4U+4YQBWIBCSYRUVGROFZH8HFDKXSXXN6YTPZ6DAGFRUA==”,“列表”=>“{”列表项“=>”[{{”数量“=>”1”,“用户项id”=>“20”,{“数量”=>“2”,“用户项id”=>“21”,{”数量“=>“3”,“名称”=>,“创建列表”} 请注意,第一个未选中的表单忽略了将user_item_id设置为“nil”,而完全忽略了参数,偷走了下一个表单的user_item_id,从而弄乱了我的数量值(我将其设置为与之前相同) 为什么会这样Ruby on rails 复选框帮助程序是否发送额外参数?,ruby-on-rails,forms,checkbox,Ruby On Rails,Forms,Checkbox,但是,如果我关闭隐藏字段,当前面的框未选中时,我的表单会“窃取”彼此的数据,从而导致其他问题。例如,在这里,我未选中第一个表单: 参数:{“utf8”=>“✓", "真实性令牌“=>”qszyk+q+pJ77WuDh2/K2S8lTuBD99DptwqeEdDI4U+4YQBWIBCSYRUVGROFZH8HFDKXSXXN6YTPZ6DAGFRUA==”,“列表”=>“{”列表项“=>”[{{”数量“=>”1”,“用户项id”=>“20”,{“数量”=>“2”,“用户项id”=>“21”,{”
<%= form_for list do |f| %> <!-- This might be an issue in production mode -->
<%= f.fields_for l = list.list_items.build, index: l.id do |list_item| %>
<td><%= list_item.check_box :user_item_id, { checked: false, include_hidden: false }, item.id, "nil" %></td> <!-- checkboxes seem problematic, try check_box_tag? -->
<td><%= item.name %></td>
<td>$<%= number_with_precision(item.price, :precision => 2) %></td>
<td><%= list_item.number_field :quantity,
min: 1,
class: "num"%></td>
<% end %>
<% end %>
PS:我最初的“nil”只有nil,但是这样做可以防止未检查的值在任何情况下被传递,并且我遇到了表单相互窃取值的问题,就像我在上面发布的那样。如果有人能告诉我怎么做,使一个未选中的框意味着我的字段将不会被提交,这将是伟大的 这是由rails完成的,以便在取消选中复选框时发送正确的值 如果不选中复选框,隐藏字段的值(由复选框帮助程序添加)将到达服务器,因为浏览器不会发送未选中的复选框 另一方面,当您选中它时,最后一个同名值将获胜,这意味着选中的值将被发送到服务器,并且一切都将按照您的预期工作 从: 明白了 HTML规范说未选中的复选框不成功, 因此,网络浏览器不会发送它们。不幸的是,这引入了 答:如果一个发票模型有一个付费标志,并且以 编辑已付款发票用户取消选中其复选框“无已付款” 参数被发送。那么,任何类似于 @invoice.update(params[:invoice])不会更新标志 为了防止出现这种情况,助手会在之前生成一个辅助隐藏字段 “非常”复选框。隐藏字段具有相同的名称及其名称 属性模拟未选中的复选框 这样,客户机要么只发送隐藏字段(表示 复选框未选中),或同时选中两个字段。自从HTML 规范规定键/值对必须以相同的顺序发送 它们出现在表单中,参数提取得到最后一个 在查询字符串中出现任何重复的键,该键适用于 普通形式
Parameters: {"utf8"=>"✓", "authenticity_token"=>"sn2HLFvVLX7ZFxBTHvRGz25H+bbyiVl8E8Kok5J7788q8WA33U8RpWmLXjU2GTjD2ybW7RMaiX1CwLJ6oCLXmQ==", "list"=>{"list_item"=>[{"user_item_id"=>"nil"}, {"user_item_id"=>"19", "quantity"=>"1"}, {"user_item_id"=>"nil"}, {"user_item_id"=>"20", "quantity"=>"2"}, {"user_item_id"=>"nil"}, {"user_item_id"=>"21", "quantity"=>"3"}], "name"=>""}, "commit"=>"Create List"}