Плагин reCAPTCHA от ambetia на Rails 3. Переопределить значения по умолчанию для div флэш-сообщений?

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

<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

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


person BasicObject    schedule 31.01.2011    source источник


Ответы (2)


Поскольку 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

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

person Agung Prasetyo    schedule 16.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
person LearningRoR    schedule 04.09.2011