我的观点中有以下代码
<%= f.input :role_names, as: :check_boxes, collection: @program.role_names %>
每当我提交表单时,我都会得到["admin, "moderator", ""]
之类的值,但我期待["admin, "moderator"]
这样的内容,为什么会这样?
此外,我创建了一个inspect元素,并且在最后一个复选框后面有一个<input name="user[role_names][]" type="hidden" value="">
标记,位于同一个控制组中。我想这会在params[:user][:recipient_role_names]
中的最后添加。
我应该如何处理?我知道我可以reject(&:blank?)
但params[:user][:recipient_role_names]
有更清洁的方法吗?
我也想知道为什么要添加输入元素?这是一个简单形式的错误还是我做错了什么?
其他信息:
答案 0 :(得分:17)
这是Rails的功能。你可以在Rails 4中禁用它。你可以在simple form issue #603和Rails issue #5402
上阅读更多相关信息。答案 1 :(得分:0)
只需将 include_hidden: false
添加到您的输入参数:
<%= f.input :role_names,
as: :check_boxes,
collection: @program.role_names,
include_hidden: false
%>
空字符串值不会在数组中发送。
Obs:我刚刚在此处添加了 simple_form 输入代码以供快速参考,因为 Vasily 的回答为我指明了正确的方向。谢谢