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