我的视图中有以下代码
<%= 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]
上有更干净的方法吗?我还想知道为什么要添加input元素?是简单形式的bug,还是我做错了什么?
其他信息:
发布于 2012-12-27 19:53:17
这是Rails的一个特性。您可以在Rails4中禁用它。您可以在simple form issue #603和Rails issue #5402上阅读更多关于它的信息
发布于 2021-07-27 08:38:32
只需将include_hidden: false
添加到您的输入参数:
<%= f.input :role_names,
as: :check_boxes,
collection: @program.role_names,
include_hidden: false
%>
并且空字符串值不会在数组中发送。
Obs:我只是在这里添加了simple_form输入代码,以便快速参考,因为它是Vasily的答案,它为我指明了正确的方向。谢谢
https://stackoverflow.com/questions/14054164
复制相似问题