设计:覆盖Recaptcha注册控制器中的创建操作

时间:2011-05-10 22:52:20

标签: ruby-on-rails devise override recaptcha

我正在尝试从Devise中的注册控制器覆盖create方法,以包含Recaptcha验证(如herehere所示):

class RegistrationsController < Devise::RegistrationsController

  def create
    if verify_recaptcha
      super
    else
      build_resource
      clean_up_passwords(resource)
      flash[:alert] = "Bad words."
      render_with_scope :new
    end
  end

end

也改变了我的routes.rb:

  map.devise_for :users, :controllers => {:registrations => "registrations"}, :path_names => {
    :sign_up => 'signup',
    :sign_in => 'login',
    :sign_out => 'logout'
  }

尝试访问新的注册页面时(使用新路径名称:http://localhost:3000/users/signup),会出现以下错误:

LoadError in RegistrationsController#new

Expected /home/benoror/project/app/controllers/registrations_controller.rb to define RegistrationsController

FULL ERROR TRACE

任何帮助表示感谢。

BTW ,我正在使用Devise 1.0.11和Rails 2.3.10,谢谢!

1 个答案:

答案 0 :(得分:5)

您的控制器是否在用户模块中?如果是这样,您将需要

class Users::RegistrationsController

{:registrations => "users/registrations"}

编辑: According to José Valim,自定义控制器在Devise 1.1之前无效。没有理由开发&lt; Rails 3 imho。对不起,我在原帖中错过了。