我正在尝试展平我的表单的数组。
def update
@tour = Tour.find(params[:id])
params[:tour][:hotel_ids][0] = params[:tour][:hotel_ids][0].split(',')
...
这会导致:
"hotel_ids"=>[["1","2"]]
我当然希望它是
"hotel_ids"=>["1","2"]
我的表格:
<%= text_field_tag 'tour[hotel_ids][]', nil %>
希望任何人都可以提供帮助。
编辑
我已经让它工作了,不知何故。但这可能是一个糟糕的方法:
我将获取数组的 text_field 从 jquery 更改为:
<%= text_field_tag 'tour[h_ids][]', nil %>
然后在我的 Controller 中我做了:
params[:tour][:hotel_ids] = params[:tour][:h_ids][0].split(',')
这可行,但我必须将 h_ids 添加到 attr_accessor 中。对于以后阅读编码器的人来说,这可能会是一个大问题……但这可以接受吗?
最佳答案
这是 ruby !
params[:tour][:hotel_ids][0].flatten!
应该可以解决问题!
ps: '!'在这里很重要,因为它会导致“展平”被保存到调用对象。
pps:对于那些与 ruby 相关的问题,我强烈建议尝试使用 irb 或 脚本/控制台。您可以拿起您的元素并索要
object.inspect
object.methods
object.class
在调试和发现 ruby 可以为您做什么时,这确实很有用。
关于ruby-on-rails - rails : Flatten array in parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436391/