在我的网站中,用户可以通过example.com/category1
,example.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
的参数。
感谢。
答案 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