Rails使用多个参数来路由资源

时间:2014-04-29 09:03:40

标签: ruby-on-rails routes

我设置路由器以使用:id:alias路由类别资源:

resources :categories, param: 'id/:alias'

现在,我的路线设置正确,例如' show'变为:

category GET    /categories/:id/:alias(.:format)     categories#show

to_param上的Category方法:

def to_param
  { id: id, alias: name.parameterize }
end

使用link_to category时,会抛出此错误:

  • 没有路线匹配{:controller =>"类别",:action =>" show",:id =>#<类别ID:2,名称:" Buiten",描述:"",祖先:nil,created_at:" 2014-04-25 16:13:11" ,updated_at:" 2014-04-25 16:13:11">,:alias => nil,:format => nil}缺少必需的键:[:alias]

我想使用这样的链接:

= link_to category

我不想使用这样的链接:

= link_to category_path( { id: category.id, alias: category.name.parameterize } )

这可能吗?

1 个答案:

答案 0 :(得分:0)

你可以用这种方式简单地解决别名nil

  def to_param
    "#{self.id}-#{self.alias}"
  end