设计自定义注册控制器错误

时间:2011-03-23 10:06:45

标签: ruby-on-rails ruby ruby-on-rails-3 devise

当我尝试创建自定义设备控制器时:

class RegistrationsController < Devise::RegistrationsController
  def new
    super
  end

  def create
    # add custom create logic here
  end

  def update
    super
  end
end  

我收到以下错误:

未知行动

一个AbstractController :: ActionNotFound

这不是路线的问题。我试图从ApplicationController继承RegistrationsController,它工作正常。一旦我尝试从Devise :: RegistrationsController继承它就会显示错误。这不是一个动作问题,因为我试图创建一个不同的动作,我得到同样的错误。

# app/config/routes.rb
devise_for :users, :controllers => {:registrations => "registrations"}
root :to => "registrations#new"

使用Rails 3.0.4

2 个答案:

答案 0 :(得分:3)

在你的路线中,如果要覆盖设计默认动作,则必须使用devise_scope。

devise_for :users, :controllers => {:registrations => "registrations"}
devise_scope :user do
    root :to => "registrations#new"
end 

有关类似问题,请参阅http://groups.google.com/group/plataformatec-devise/browse_thread/thread/a5beaaf4b1ad343a

此处有关于更改默认签到路线的文档,我知道您正在进行注册,但这可能类似:https://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes

答案 1 :(得分:1)

我在项目中成功使用了以下代码:

app/controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
end

routes.rb
devise_for :users, :controllers => { :registrations => "users/registrations" }