24

我的视图中有以下代码

<%= f.input :role_names, as: :check_boxes, collection: @program.role_names %>

每当我提交表单时,我都会得到类似的值,["admin, "moderator", ""]但我期待的是类似的值["admin, "moderator"],这是为什么呢?

此外,我制作了一个检查元素,<input name="user[role_names][]" type="hidden" value="">在同一个控制组中的最后一个复选框之后有一个标签。我想这是在最后添加的params[:user][:recipient_role_names]

我该如何处理?我知道我可以做,reject(&:blank?)但是有更清洁的方法params[:user][:recipient_role_names]吗?我还想知道为什么要添加输入元素?它是简单形式的错误还是我做错了什么?

其他信息:

  1. simple_form gem 版本:2.0.4
  2. 导轨版本:3.2.8
4

2 回答 2

22

这是 Rails 的一个特性。您将可以在 Rails 4 中禁用它。您可以在简单表单问题 #603Rails 问题 #5402上阅读更多相关信息

于 2012-12-27T11:53:17.110 回答
0

只需添加include_hidden: false到您的输入参数:

<%= f.input :role_names, 
  as: :check_boxes, 
  collection: @program.role_names, 
  include_hidden: false 
%>

并且空字符串值不会在数组中发送。


Obs:我刚刚在此处添加了 simple_form 输入代码以供快速参考,因为 Vasily 的回答为我指明了正确的方向。谢谢

于 2021-07-27T00:38:31.707 回答