Rails 3 Routing - How to use scope to create admin prefix

独自空忆成欢 提交于 2019-12-08 17:11:33

问题


I'm using this Rails Guide to create a scope in order to create an "/admin" prefix for some controllers.

So I have a controller named Pages, I want to access it via "/admin/pages".

scope "/admin" do
    resources :pages
end

That works great, but it is still accessible via "/pages" ... How do I prevent that? (I'm using Rails 3)

Here's my routes file:

devise_for :users

scope "/admin" do

    resources :pages

    resources :contents

end

root :to => "index#index"   

match ':controller(/:action(/:id(.:format)))'

回答1:


Your syntax for the namespace is correct, but you need to remove the catch-all match from the last line because, according to the default routes.rb file,

# This is a legacy wild controller route that's not recommended for RESTful applications.
# Note: This route will make all actions in every controller accessible via GET requests.

If the requested URL does not match the namespace you have declared, it will still match against the catch-all route at the end.




回答2:


Try this should work

namespace :admin do 

  resources :pages 

end

http://edgeguides.rubyonrails.org/routing.html




回答3:


Try this:

scope "/admin", as: :admin do
  resources :pages
end


来源:https://stackoverflow.com/questions/4581887/rails-3-routing-how-to-use-scope-to-create-admin-prefix

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!