params在传递到_path路由助手时以params[:format]显示



我有一个函数,它用几个参数调用_path辅助函数:v2_specific_path(user, filter_params)这非常有效,在处理该路径的控制器方法中,我看到了userfilter_params及其值。

事实上,如果我试图打印出params,它们不会出现,但如果我打印出其中任何一个,它们就会打印得很好。filter_params有一个助手函数,它从几个params[:keys]构建一个散列,这可能是原因。

我想做的是向函数调用添加另一组参数:v2_specific_path(user, new_params, filter_params)由于我正在尝试添加一些功能,需要将一些信息传递给解决此请求的底层控制器。

问题是,这不起作用,似乎把事情搞砸了:

  1. 如果我把它们放在中间:v2_specific_path(user, new_params, filter_params),那么所有其他参数都工作得很好,但new_params实际上在params[:format]中显示为:params[:format]="param1=4&param2=hi
  2. 如果我把它们放在最后:v2_specific_path(user、filter_params、new_params(,则filter_params根本不会被解析并出现在params[:format]中,但new_format似乎确实被解析了并正确地显示在params

我似乎不明白为什么会发生这种事。我已确保控制器中有正确的params.require/params.permit值。

如果任何人有任何其他替代方案可以将值从application_helper传递到控制器(通过_path或一些共享变量(,也将极大地帮助,我们将不胜感激

谢谢!

对于任何寻求解决方案的人:

我通过做两件事来解决这个问题:1( 创建了适合我的实现的适当的路由(我试图做一些过于聪明的事情,并决定只创建新的相关路由,而不是做一些过于动态的事情2( 我在路线中添加了我需要的参数:/something/:param1/whatever/:param2

这对我有效

最新更新