【问题标题】:Fetching value from nested params in Ruby on Rails从 Ruby on Rails 中的嵌套参数中获取值
【发布时间】:2015-10-26 08:35:39
【问题描述】:

我在 Ruby on Rails 中使用 jQuery DataTables 插件,但在检索嵌套参数上的值时遇到问题。

当我尝试使用检查时

puts params.inspect

我在控制台中得到以下信息

Parameters: {"draw"=>"1", "columns"=>{"0"=>{"data"=>"0", "name"=>"", "searchable"=>"false", "orderable"=>"false", "search"=>{"value"=>"", "regex"=>"false"}}, "1"=>{"data"=>"1", "name"=>"", "searchable"=>"true", "orderable"=>"true", "search"=>{"value"=>"", "regex"=>"false"}}, "2"=>{"data"=>"2", "name"=>"", "searchable"=>"true", "orderable"=>"true", "search"=>{"value"=>"", "regex"=>"false"}}, "3"=>{"data"=>"3", "name"=>"", "searchable"=>"true", "orderable"=>"true", "search"=>{"value"=>"", "regex"=>"false"}}, "4"=>{"data"=>"4", "name"=>"", "searchable"=>"false", "orderable"=>"false", "search"=>{"value"=>"", "regex"=>"false"}}}, "order"=>{"0"=>{"column"=>"1", "dir"=>"asc"}}, "start"=>"0", "length"=>"10", "search"=>{"value"=>"", "regex"=>"false"}, "_"=>"1438662290344"}

我想从 :order 中获取值,我将代码更改为如下所示

puts params[:order].inspect

然后我在控制台中得到以下内容

{"0"=>{"column"=>"1", "dir"=>"asc"}}

我想获得“dir”=>“asc”的值,我尝试了以下代码但仍然没有成功

puts params[:order][0][:dir].inspect
puts params["order"][0]["dir"].inspect

任何建议将不胜感激,谢谢。

【问题讨论】:

  • 试试这个puts params["order"]["0"]["dir"].inspect
  • 这个puts params["order"]["dir"] ?
  • 请考虑"0" 是@Pavan 发布的0 之外的另一个键。试试[:order]["0"]

标签: jquery ruby-on-rails ruby datatables


【解决方案1】:

您首先需要以您可以实际看到结构的方式格式化 params-hash。像这样:

{
    "draw"=>"1", 
    "columns"=>{
         "0"=>{"data"=>"0", "name"=>"", "searchable"=>"false", "orderable"=>"false", "search"=>{"value"=>"", "regex"=>"false"}}, 
         "1"=>{"data"=>"1", "name"=>"", "searchable"=>"true", "orderable"=>"true", "search"=>{"value"=>"", "regex"=>"false"}}, 
         "2"=>{"data"=>"2", "name"=>"", "searchable"=>"true", "orderable"=>"true", "search"=>{"value"=>"", "regex"=>"false"}}, 
         "3"=>{"data"=>"3", "name"=>"", "searchable"=>"true", "orderable"=>"true", "search"=>{"value"=>"", "regex"=>"false"}}, 
         "4"=>{"data"=>"4", "name"=>"", "searchable"=>"false", "orderable"=>"false", "search"=>{"value"=>"", "regex"=>"false"}}
   }, 
   "order"=>{
       "0"=>{"column"=>"1", "dir"=>"asc"}}, 
       "start"=>"0", 
       "length"=>"10", 
       "search"=>{"value"=>"", "regex"=>"false"}, 
    "_"=>"1438662290344"}
}

现在很清楚了:你有字符串作为键,也有数字,你应该通过使用来获得你需要的信息:

params["order"]["0"]["dir"]

【讨论】:

  • 好的,现在正在运行,感谢大家的帮助,非常感谢。
  • @bernie_wids 有什么解决办法?
  • @sschmeck 一开始我把代码放在控制器里面,但是总是返回 nil,然后我跟着这个tutorial,为数据表创建了新的库,然后它可以得到params["order"]["0"]["dir"]的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2014-05-03
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多