Ruby on rails 如何使用用户名作为控制器的前缀?
我对Rails 3中的新路由有一些问题。以用户名作为路径前缀的最佳方式是什么。现在我有以下代码:Ruby on rails 如何使用用户名作为控制器的前缀?,ruby-on-rails,ruby-on-rails-3,routing,Ruby On Rails,Ruby On Rails 3,Routing,我对Rails 3中的新路由有一些问题。以用户名作为路径前缀的最佳方式是什么。现在我有以下代码: resources :links, :path => '/:username' do put 'star', :on => :member end 但它会让params空着 编辑: 我想要一个URL,如: /:username/links /:username/links/:id/star 我希望能够获取params[:username]您应该使用嵌套的资源 resource
resources :links, :path => '/:username' do
put 'star', :on => :member
end
但它会让params空着
编辑:
我想要一个URL,如:
/:username/links
/:username/links/:id/star
我希望能够获取params[:username]您应该使用嵌套的资源
resources :users do
resources :links do
put 'star', :on=>:member
end
end
然后,如果在user.rb中实现to_param
def to_param
username.parameterize
end
那你就有
/:username/links
/:username/links/23
/:username/links/23/star
您可以使用
scope
进行此操作,它更整洁:
scope :path => ":username" do
resources :links do
put 'star', :on => :member
end
end
我想要/:username/链接,但这不给我:/users/:username/链接吗?是的,这给了他/users/:username。他希望它不带/users/前缀。这看起来很有希望,但当我试图获取params[:username]时,我得到了零。@magnushjelm:这实际上对我有用,我不知道为什么你的会是零:这很奇怪。当我在控制台中测试它时,它似乎可以工作。当我在浏览器中测试时,参数有时会显示为一个请求的延迟。我正在将一个应用程序从2.3.9升级到3.0.3,因此我的代码很可能在其他地方被破坏。