Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 访问控制器vs视图中的嵌套参数(无符号到整数的隐式转换)_Ruby On Rails_Ruby_Ruby On Rails 4_Hash_Ransack - Fatal编程技术网

Ruby on rails 访问控制器vs视图中的嵌套参数(无符号到整数的隐式转换)

Ruby on rails 访问控制器vs视图中的嵌套参数(无符号到整数的隐式转换),ruby-on-rails,ruby,ruby-on-rails-4,hash,ransack,Ruby On Rails,Ruby,Ruby On Rails 4,Hash,Ransack,我有一个嵌套参数的散列,我试图从中将特定键的值分配给控制器中的变量: @catch_all = params[:q][:search_box] 当尝试运行上述方法时,我得到了一个错误,没有将符号隐式转换为整数。令人困惑的是,当我在视图中放置类似的代码时,它会返回正确的值 <%= params[:q][:search_box] %> 返回t,这是我在本例中想要的 从我读到的内容来看,在控制器中,params散列被视为数组,[:search_box]中的字符串不是索引整数,导致异常。

我有一个嵌套参数的散列,我试图从中将特定键的值分配给控制器中的变量:

@catch_all = params[:q][:search_box]
当尝试运行上述方法时,我得到了一个错误,没有将符号隐式转换为整数。令人困惑的是,当我在视图中放置类似的代码时,它会返回正确的值

<%= params[:q][:search_box] %>
返回t,这是我在本例中想要的

从我读到的内容来看,在控制器中,params散列被视为数组,[:search_box]中的字符串不是索引整数,导致异常。如何将t赋值给变量?更重要的是,为什么我能够在视图而不是控制器中获取值

编辑:如果有关系,[:q]来自搜掠搜索gem,在检查参数[:q]时,它是一个字符串类


Edit2:params[:q]属于视图中的ActionController::Parameters类

我以前通过在数据库中保存完整路径和在转换为单独保存每个字段参数的过程中设置了保存的搜索,但忽略了删除视图中的完整路径转换,这是罪魁祸首。参数[:q][:search\u box]结束工作。

尝试使用@catch\u all=params[:q]['search\u box']和@catch\u all==search\u box and==t。我将“search_box”文本更改为“vsearch_box”,以查看它是否按字面意思返回字符串,但@catch_all返回nil。