我正在尝试覆盖Devise
注册控制器,这是我的设置:
注册控制器.rb
class RegistrationsController < Devise::RegistrationsController
before_filter :authenticate_user!, :only => :token
def new
super
end
def create
@request.env["devise.mapping"] = Devise.mappings[:user]
@user = User.new(params[:user])
if @user.save
render 'create.js', :success => true
else
render 'create.js', :success => false
end
end
end
路线.rb
(...)
devise_for :users, :controllers => {:sessions => 'sessions', :registrations => 'registrations'}
match 'registrations/create' => 'registrations#create' , :as => :user_register
# not matter if i'll put `match 'registrations/create'` line above or under the `devise_for` line
(...)
这一切(当我将浏览器指向时registrations/create
)给了我一个错误:
未知动作
找不到路径“/registrations/create”的设计映射。这可能有两个原因:1)您忘记将您的路线包装在范围块内。例如: devise_scope :user do match "/some/route" => "some_devise_controller" end 2) 您正在测试绕过路由器的设计控制器。如果是这样,您可以明确告诉 Devise 使用哪个映射:@request.env["devise.mapping"] = Devise.mappings[:user]
我发现一些线程描述了类似的问题,但它们根本没有帮助。感谢您的任何建议!