首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并所需参数时出现url_helper错误

合并所需参数时出现url_helper错误
EN

Stack Overflow用户
提问于 2018-11-11 18:36:27
回答 1查看 184关注 0票数 1

我试图将一个值合并到params散列,并将结果哈希传递给url助手。(使用Rails 5)

例如。我有下列路线

routes.rb

代码语言:javascript
复制
get 'test-url/:arg_1' => 'test#test_action_1', :as => 'test_test_action_one'
get 'test-url/:arg_1/:arg_2' => 'test#test_action_2', :as => 'test_test_action_two'

用户访问/test-url/value-1,我想在/test-url/value-1/value-2视图中生成一个链接

视图中的文件

代码语言:javascript
复制
link_to test_test_action_two_url(params.permit(:arg_1).merge(arg_2: 'value-2'))

我得到以下错误:

代码语言:javascript
复制
No route matches {:action=>"test_action_2", :arg_1=>"value-1", "arg_1"=>"value-1", "arg_2"=>"value-2", :controller=>"test"} missing required keys: [:arg_2]

在遮罩下,ActionController::Parameters对象维护内部哈希(with_indifferent_access)。在merge之后,哈希仍然具有indifferent_access,您可以使用符号或字符串访问arg_2

但是,我不知道为什么url生成器找不到:arg_2密钥.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-11 22:07:45

ActionController::Parameters使用HashWithIndifferentAccess,它将键存储为字符串而不是符号。但是,路由URL助手要求参数在符号键中。因此,正如在错误中提到的,arg_2需要在符号键中。

store keys as strings and not symbols?

尝试创建一个新的普通哈希:

代码语言:javascript
复制
test_test_action_two_path({arg_1: "value_1", arg_2: "value_2"})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53251906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档