Rails:simple_form:从checkbox集合中获取一个空字符串

时间:2012-12-27 11:46:43

标签: ruby-on-rails simple-form

我的观点中有以下代码

<%= 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]有更清洁的方法吗? 我也想知道为什么要添加输入元素?这是一个简单形式的错误还是我做错了什么?

其他信息:

  1. simple_form gem version:2.0.4
  2. rails version:3.2.8

2 个答案:

答案 0 :(得分:17)

这是Rails的功能。你可以在Rails 4中禁用它。你可以在simple form issue #603Rails 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 的回答为我指明了正确的方向。谢谢