Разработка в пространстве имен - ActionController :: RoutingError (Нет подходящих маршрутов {: action => "new",: controller => "devise / session"}) - PullRequest
3 голосов
/ 10 декабря 2010

Я использую Devise, и все работает отлично, но теперь я пытаюсь переместить вещи в пространство имен администратора.

У меня есть маршрут, который выглядит следующим образом:

namespace :admin do
  devise_for :users, :controllers => { :registrations => "admin/users/registrations" }
end

В одном из моих контроллеров у меня есть

before_filter :authenticate_user!

, но когда он вызывается, он выдает:

ActionController::RoutingError (No route matches {:action=>"new", :controller=>"devise/sessions"}): 

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 29 марта 2013

Согласно документации Devise (которая, вероятно, изменилась с момента публикации), вы можете использовать следующие инструкции:

#    ...
#    
#    Notice that whenever you use namespace in the router DSL, it automatically sets the module.
#    So the following setup:
#
#      namespace :publisher do
#        devise_for :account
#      end
#
#    Will use publisher/sessions controller instead of devise/sessions controller. You can revert
#    this by providing the :module option to devise_for.
#    
#    ...

Надеюсь, это кому-нибудь поможет.

1 голос
/ 12 сентября 2011

Обходной путь для этого заключается в использовании опции path и перемещении devise_for за пределы блока namespace:

devise_for :users, :path => '/admin',
                   :controllers => { :registrations => "admin/users/registrations" }
namespace :admin do
  # other resource controllers
end

Возможно, это не так элегантно (или интуитивно понятно), но у меня работает!

1 голос
/ 30 марта 2011

Я делаю это:

scope '/admin' do
  devise_for :admins
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...