我有一个函数,它用几个参数调用_path辅助函数:v2_specific_path(user, filter_params)
这非常有效,在处理该路径的控制器方法中,我看到了user
和filter_params
及其值。
事实上,如果我试图打印出params
,它们不会出现,但如果我打印出其中任何一个,它们就会打印得很好。filter_params
有一个助手函数,它从几个params[:keys]
构建一个散列,这可能是原因。
我想做的是向函数调用添加另一组参数:v2_specific_path(user, new_params, filter_params)
由于我正在尝试添加一些功能,需要将一些信息传递给解决此请求的底层控制器。
问题是,这不起作用,似乎把事情搞砸了:
- 如果我把它们放在中间:
v2_specific_path(user, new_params, filter_params)
,那么所有其他参数都工作得很好,但new_params
实际上在params[:format]
中显示为:params[:format]="param1=4¶m2=hi
- 如果我把它们放在最后: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
等
这对我有效