Ruby on rails 具有多个参数的Rails路由资源
我刚刚将路由器设置为使用Ruby on rails 具有多个参数的Rails路由资源,ruby-on-rails,routes,Ruby On Rails,Routes,我刚刚将路由器设置为使用:id和:alias路由类别资源: resources :categories, param: 'id/:alias' 现在,我的路线设置正确,例如“显示”变为: category GET /categories/:id/:alias(.:format) categories#show 类别上的to_param方法: def to_param { id: id, alias: name.parameterize } end 当使用链接到类别时,它抛
:id
和:alias
路由类别资源:
resources :categories, param: 'id/:alias'
现在,我的路线设置正确,例如“显示”变为:
category GET /categories/:id/:alias(.:format) categories#show
类别上的to_param
方法:
def to_param
{ id: id, alias: name.parameterize }
end
当使用链接到类别时,它抛出以下错误:
- 没有路由匹配{:controller=>“categories”,:action=>“show”,:id=>#
,:alias=>nil,:format=>nil}缺少必需的键:[:alias]
我想使用如下链接:
= link_to category
= link_to category_path( { id: category.id, alias: category.name.parameterize } )
我不想使用这样的链接:
= link_to category
= link_to category_path( { id: category.id, alias: category.name.parameterize } )
这可能吗?您可以用这种方法简单地解决别名nil
def to_param
"#{self.id}-#{self.alias}"
end
它在rails控制台app.category\u path(id:2,别名:“asas”)中显示了什么?
它抛出了错误吗?你的别名是nil
这就是它抛出错误的原因。你可以验证我的评论app.category\u path(id:2,别名:nil)
现在你看到它会抛出错误了看看你的帖子:alias=>nil,:format=>nil}
您只需在中将别名避免为_param
并将其作为查询参数发送,如/categories/2?alias=anything
仍然是相同的错误。。在我看来,我们无法将哈希从返回到\u param