Плагин ambethia reCAPTCHA на Rails 3. Переопределить значения по умолчанию для сообщений флэш-памяти? - PullRequest
5 голосов
/ 31 января 2011

У меня работает плагин ambethia reCAPTCHA на Rails 3. Кто-нибудь знает, как переопределить его разметку флэш-сообщения? Я хотел бы повторно использовать свой flash_error идентификатор id вместо использования плагина flash_recaptcha_error div id:

<div id="flash_recaptcha_error">incorrect-captcha-sol</div>

Кроме того, как бы вы очистили этот контроллер # create?

def create
  @post = Post.new(params[:post])
  respond_to do |format|
    if verify_recaptcha(:model => @post, :error => "reCAPTCHA incorrect. Try again.") && @post.save
      flash.now[:notice] = "Created \"#{@post.title}\""
      format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
    else
      flash.now[:error] = "Incorrect word verification. Are you sure you\'re human?"
      format.html { redirect_to(:back, :error => 'reCAPTCHA incorrect. Try again.') }
    end
  end
end

Спасибо, что прочитали мой вопрос.

Ответы [ 2 ]

9 голосов
/ 16 апреля 2011

Поскольку flash [] - это массив, вы можете удалить элемент внутри него. Когда мы используем recaptcha gem, флэш-массив содержит элемент recaptcha_error , поэтому вы просто удаляете этот элемент только с: flash.delete (: recaptcha_error) внутри вашего контроллера.

Например:

if  verify_recaptcha(:model=>@object,:message=>"Verification code is wrong", :attribute=>"verification code") && @object.save
  #your code if succes
else
  flash.delete(:recaptcha_error)
  #your code if its fail
end

Может быть, это может вам помочь. Спасибо

0 голосов
/ 04 сентября 2011

Если вы создаете систему аутентификации пользователя с нуля, вам, возможно, придется сделать что-то вроде этого:

class UsersController < ApplicationController

  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    respond_to do |format|
        if verify_recaptcha(:model => @user )
            if @user.save
                format.html { redirect_to root_url,  :notice => "You have Signed up!" }
            else
                format.html { render :new }
            end
        else
            flash.delete(:recaptcha_error)
            format.html { redirect_to( root_path , :flash => { :error => 'Please retry the two words of the reCaptcha' } ) }
        end
    end
  end
end
...