【问题标题】:Rails MultiSelect (Array) not converting to String ProperlyRails MultiSelect(数组)未正确转换为字符串
【发布时间】:2015-11-17 11:46:56
【问题描述】:

我似乎无法将我的数组正确转换为字符串。我正在使用 Rails 多选:

观看次数:

<%= f.select :foo, [ ['a'], ['b'], ['c'] ], {:prompt => "Select an alpha"}, {:multiple => true} %>

控制器:

params.require(:bar).permit(:foo => [])

JS 视图:

foo.toString() // Gives: ["", "a", "c"]

如何将foo 很好地格式化为a, c?如果选择ac

在rails控制台中显示为:

"[\"\", \"a\", \"c\"]"

编辑:

我的表格列是字符串:(

编辑 #2:

我已经删除了 foo 列:

remove_column :bar, :foo

与:

add_column :bar, :foo, :text, array: true, default: []

现在我的rails c 看起来像:

[0] "",
[1] "a",
[2] "c"

如何获得:

[0] "a",
[1] "c"

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-4 reactjs


    【解决方案1】:

    您可以在模型中使用 before_validation 回调来删除空白,然后再保存到数据库:

    before_validation :remove_blanks_in_foo
    
    private
    
    def remove_blanks_in_foo
      self.foo = foo.reject(&:blank?)
    end
    

    【讨论】:

    • 谢谢!我宁愿使用foo.delete_if(&amp;:blank?),因为我可以轻松阅读!但你的确实奏效了。
    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多