Ruby on Rails中的冲突路由和参数名称

时间:2012-08-20 14:09:53

标签: ruby-on-rails ruby-on-rails-3 routes

在我的网站中,用户可以通过example.com/category1example.com/category2等访问类别。因此,我按照以下方式编写路线规则:

match '/:category' => 'home#category', :constraints => ShowCategory.new

ShowCategory是一个Class,用于确保访问的类别用户存在。同时,用户可以指定他们的个人域名,然后可以通过example.com/peter等网址访问他/她的个人资料页面。所以还有另一条路线规则:

match '/:user_domain' => 'Profiles#show'

因为我使用:constraints作为类别路线,所以路线没有冲突。但是,在Profiles#show操作中,我始终获取参数{'category' => 'peter'},而不是{'user_domain' => 'peter'}

如何更正参数名称?我不想在配置文件控制器中使用名为category的参数。

感谢。

1 个答案:

答案 0 :(得分:0)

嗯,你命名你的路线的方式没有多大意义;这让路由引擎感到困惑。它应该是categories/1而不是category1

至于配置文件,我想第一条规则和to_param方法应该足够了。

# routes.rb
profile '/:user_domain', controller: 'profiles', action: 'show'
resources :profiles
resources :categories
# profile.rb
def to_param
    self.user_domain
end