我正在使用Devise,一切都运行良好,但我现在正试图将事情转移到'admin'命名空间。
我的路线如下:
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"}):
有什么想法吗?
答案 0 :(得分:3)
根据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 :(得分:1)
我这样做:
scope '/admin' do
devise_for :admins
end
答案 2 :(得分:1)
解决方法是使用path
选项并移动devise_for
块之外的namespace
:
devise_for :users, :path => '/admin',
:controllers => { :registrations => "admin/users/registrations" }
namespace :admin do
# other resource controllers
end
也许它并不优雅(或直观),但它对我有用!