Проблема пространства имен Rails 2 и мелких маршрутов - PullRequest
0 голосов
/ 30 июня 2010

Я написал область администрирования определенного приложения rails, и теперь я готов установить его как собственный раздел на веб-сайте.

Следовательно, это будет / admin

Однако я не хотел, чтобы он был / admin в самом маршруте, я хотел иметь что-то менее распространенное, поэтому я добавил пару дефисов до и после него.

Таким образом, маршрут / -admin- / а пространство имен - Admin.

После настройки с помощью: path_prefix => "/ -admin-" у меня есть следующий блок кода:

map.namespace "/-admin-/", :name_prefix => "", :path_prefix => "/-admin-" do |admin|

Это работает для всехно вместо этого, в выходных данных о маршрутах типа rake вывод выглядит так:

new_page GET    /-admin-/areas/:area_id/pages/new(.:format)                         {:action=>"new", :controller=>"admin/pages"}
edit_admin_page GET    /admin/pages/:id/edit(.:format)                                     {:action=>"edit", :controller=>"admin/pages"}
admin_page GET    /admin/pages/:id(.:format)                                          {:action=>"show", :controller=>"admin/pages"}
PUT    /admin/pages/:id(.:format)                                          {:action=>"update", :controller=>"admin/pages"}
DELETE /admin/pages/:id(.:format)                                          {:action=>"destroy", :controller=>"admin/pages"}
areas GET    /-admin-/areas(.:format)                                            {:action=>"index", :controller=>"admin/areas"}
POST   /-admin-/areas(.:format)                                            {:action=>"create", :controller=>"admin/areas"}
new_area GET    /-admin-/areas/new(.:format)                                        {:action=>"new", :controller=>"admin/areas"}

Обратите внимание, что маршруты с мелким маршрутом имеют префикс / admin /, а не / -admin- / (как и их родительские маршруты)маршруты).

Есть идеи, как это обойти?Это ошибка в рельсах или мне нужно обойти это?Я пытался добавить: path_prefix к каждому вложенному маршруту, но он ничего не делает?

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 15 августа 2012

Нет способа обойти это. Оказывается, что все версии Rails будут разбивать URL и имена его ресурсов до самых низких точек, когда они настроены на мелководье. Единственное решение для этого - установить все маршруты ресурсов вручную без использования map.resources.

0 голосов
/ 30 июня 2010

Я не уверен в том, что вы не можете использовать / admin - безопасность через неизвестность - это на самом деле не безопасность - вы должны использовать что-то вроде authlogic для защиты от неавторизованных пользователей.

Попробуйте следующее для пространства именКонтроллеры администратора:

map.namespace :admin, :path_prefix => "-admin-" do |admin|
    admin.resources :users
    admin.resources :pages
end

Пример сгенерированного маршрута:

admin_users GET /-admin-/users(.:format) {:controller=>"admin/users", :action=>"index"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...