ruby-on-rails - rails : Flatten array in parameter

标签 ruby-on-rails arrays controller

我正在尝试展平我的表单的数组。

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/

相关文章:

android - Rails 3/PhoneGap : Converting a Rails app into an Phonegap Android app?

ruby-on-rails - 通过字符串获取ActiveRecord对象的属性

ruby-on-rails - 向 Active Resource 类添加非静态自定义方法的正确方法

ruby-on-rails - spree 商务 : User Login through API

c++ - 从文件读取时崩溃

arrays - 在 C 中实现 memset 以设置整个字而不是逐字节设置

Python 列表到 Cython

model-view-controller - MVC Lazarus 参数数量错误

controller - 蛋糕PHP 2.3.8 : Calling Another Controller function in CronController. php

php - Laravel 4 - 不返回被调用方法时从存储库重定向