【发布时间】:2014-07-01 21:48:22
【问题描述】:
我有一个嵌套参数的哈希值,我试图将值从特定键分配给控制器中的变量:
@catch_all = params[:q][:search_box]
当尝试运行上面所在的方法时,我得到一个错误“没有将符号隐式转换为整数”。令人困惑的是,当我在视图中放置类似的代码时,它会返回正确的值。
<%= params[:q][:search_box] %>
返回“t”,这是我在这个例子中想要的。
从我读到的内容看来,在控制器中,params 哈希被视为一个数组,而 [:search_box] 中的字符串不是索引整数,会导致异常。如何将“t”分配给变量? 更重要的是,为什么我能够在视图中而不是控制器中获取值?
编辑:如果重要的话,[:q] 来自 ransack search gem,在检查 params[:q] 时它是一个字符串类。
Edit2: params[:q] 属于视图中的 ActionController::Parameters 类
【问题讨论】:
-
试试
@catch_all = params[:q]['search_box']和<%= params[:q]['search_box'] %> -
@catch_all == "search_box"和<%= params[:q]['search_box'] %> == "t"。我将前者中的 'search_box' 文本更改为 'vsearch_box' 以查看它是否按字面意思返回字符串,但@catch_all返回 nil。
标签: ruby-on-rails ruby ruby-on-rails-4 hash ransack