Rails 3 Routing - Как использовать область для создания префикса администратора - PullRequest
8 голосов
/ 03 января 2011

Я использую это Руководство по Rails , чтобы создать область видимости для создания префикса "/ admin" для некоторых контроллеров.

Итак, у меня есть контроллер с именем Pages, я хочу получить к нему доступ через "/admin/pages".

scope "/admin" do
    resources :pages
end

Это прекрасно работает, но все равно доступно через "/ pages" ... Как мне это предотвратить? (Я использую Rails 3)

Вот мой файл маршрутов:

devise_for :users

scope "/admin" do

    resources :pages

    resources :contents

end

root :to => "index#index"   

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

Ответы [ 3 ]

7 голосов
/ 03 января 2011

Ваш синтаксис для пространства имен правильный, но вам нужно удалить совпадение «поймать все» из последней строки, потому что, согласно файлу default.rb по умолчанию,

# 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.

Если запрошенный URL-адрес делаетне соответствует объявленному вами пространству имен, он все равно будет совпадать с маршрутом перехвата в конце.

3 голосов
/ 03 января 2011

Попробуйте это должно работать

namespace :admin do 

  resources :pages 

end

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

0 голосов
/ 23 августа 2016

Попробуйте это:

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