【问题标题】:Accessing Nested Params in Controller vs Views (no implicit conversion of Symbol into Integer)访问控制器与视图中的嵌套参数(没有将符号隐式转换为整数)
【发布时间】: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']&lt;%= params[:q]['search_box'] %&gt;
  • @catch_all == "search_box"&lt;%= params[:q]['search_box'] %&gt; == "t"。我将前者中的 'search_box' 文本更改为 'vsearch_box' 以查看它是否按字面意思返回字符串,但 @catch_all 返回 nil。

标签: ruby-on-rails ruby ruby-on-rails-4 hash ransack


【解决方案1】:

我之前通过将完整路径保存在数据库中并转换为单独保存每个字段参数来设置我保存的搜索,忽略了在我的视图中删除到完整路径的转换,这是罪魁祸首。 params[:q][:search_box] 工作结束了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多