2011-05-22 2 views
2

J'ai essayé de configurer ceci en fonction des questions précédemment posées, mais je n'ai pas réussi à le faire fonctionner. Le captcha apparaît sur mes formulaires mais un utilisateur peut toujours s'inscrire sans avoir à remplir la recaptcha.Configuration de la mise en place avec Recaptcha - Rails 3

Je travaille avec les instructions suivantes. https://github.com/plataformatec/devise/wiki/How-To:-Use-Recaptcha-with-Devise

  1. J'ai mes clés privées et publiques ReCaptcha

environment.rb

ENV['RECAPTCHA_PUBLIC_KEY'] = 'mykey1234567' 
ENV['RECAPTCHA_PRIVATE_KEY'] = 'mykey1234567' 
  1. J'ai installé la pierre précieuse recaptcha.

Gemfile

source 'http://rubygems.org' 

gem 'rails', '3.0.3' 

gem 'sqlite3-ruby', :require => 'sqlite3' 
gem 'devise', '1.1.7' 
gem "jquery-rails" 
gem 'recaptcha', :require => 'recaptcha/rails' 
  1. J'ai ajouté des balises ReCaptcha à mon avis d'inscription.

new.html.erb

 <%= recaptcha_tags %> 

    <p><%= f.submit "Sign up" %></p> 
  1. Crée Enregistrements contrôleur

    rails génèrent contrôleur Enregistrements créent

Enregistrements contrôleur

class RegistrationsController < Devise::RegistrationsController 

def create 
     if verify_recaptcha 
     super 
     else 
     build_resource 
     clean_up_passwords(resource) 
     flash[:alert] = "There was an error with the recaptcha code below. Please re-enter the code and click submit." 
     render_with_scope :new 
     end 
    end 
end 

Je suis supposé éditer mon fichier de routes mais je ne sais pas exactement quelle peut être la cause du problème.

Mes itinéraires fichier

devise_for :troopers, :path => "troopers", :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" } 

Merci pour toute aide.

Répondre

2

Vous devez également indiquer à Devise d'utiliser votre RegistrationsController personnalisé. Pour ce faire, spécifiez les options :controllers dans votre déclaration devise_for. Sans cela, le Devise::RegistrationsController est appelé, ce qui explique probablement pourquoi recaptcha ne fonctionne pas.

devise_for :troopers, 
      :controllers => { :registrations => "registrations" }, 
      :path => "troopers", 
      :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" } 
+0

J'ai modifié le fichier de ma route en le suivant. 'devise_for: soldats de la cavalerie, : contrôleurs => {: inscriptions => "inscriptions"}, : path => "Troopers", : path_names => {: sign_in => "login",: sign_out =>" logout ",: sign_up =>" register "}' Cela semble fonctionner mais je ne reçois aucun message d'erreur maintenant. Est-ce un problème avec la vue? –

+0

Vous devez transmettre l'objet modèle lors de l'appel de 'verify_recaptcha' dans votre contrôleur, par ex. 'verify_recaptcha (: model => ressource)'. Vous pouvez également spécifier d'autres options, telles qu'un message d'erreur personnalisé. Consultez la documentation [recaptcha/rails] (https://github.com/ambethia/recaptcha). – mbreining

+0

Je vais chercher des liens doc.J'ai changé la méthode de création dans le contrôleur d'enregistrements personnalisés de flash [: alert] à flash [: notice] qui semble fonctionner correctement. Merci de votre aide. –

Questions connexes