【问题标题】:Rails: How can i set empty array with current parametersRails:如何使用当前参数设置空数组
【发布时间】:2013-07-16 20:14:05
【问题描述】:

如果 check_box_tag 未选中,我的应用程序想要发送空数组

这是我的 hidden_​​field_tag 代码

<%= hidden_field_tag('user[roles][]') %>

现在我得到了参数

"user"=>{"roles"=>[""]}

我想用

 "user"=>{"roles"=>[]}

请指导

【问题讨论】:

  • 我会尝试&lt;%= hidden_field_tag('user[roles][]', value: nil) %&gt;
  • juanpastas 它不起作用,它向我显示 "user"=>{"roles"=>["{:value=>nil}"] T_T
  • 对不起&lt;%= hidden_field_tag('user[roles][]', nil) %&gt;
  • juanpastas,还是不行,先生,它显示 "user"=>{"roles"=>[""]} 但我想要 "user"=>{"roles"=>[]} " T_T
  • 好的,现在我可以修复它了,我忘记了参数必须始终使用字符串发送(这是我的错),我可以使用控制器将 [""] 转换为 []

标签: html ruby-on-rails arrays forms parameters


【解决方案1】:

您不能阻止 rails 将 "" 指定为默认值,但您可以像这样从控制器中的数组中删除空字符串:

@arr = params["user"]["roles"].map{ |x|
  x unless x.empty?
  nil if x.empty?
}.compact

mapnil 替换空字符串,compact 从数组中删除 nil 值。

【讨论】:

  • 看起来没问题,但现在我用了params.map{ |key, val| val.delete_if {|elem| elem.empty? } if val.is_a? (Array)}你有什么想法吗?
  • params["user"]["roles"].delete_if { |r| r.blank? }怎么样
【解决方案2】:
<%= hidden_field_tag('user[roles][]', nil) %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 2019-06-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多