Vous avez une erreur sur les tests. Le développement et la production ne montrent aucune erreur.

Error:
UsersTest#test_creating_a_user:
NoMethodError: undefined method `users_url' for #<RegistrationsController:0x00007fd3e69d1a18>
Did you mean?  user_session_url
Did you mean?  user_session_url
    app/controllers/registrations_controller.rb:11:in `check_captcha'

Vous avez un contrôleur d'enregistrement de devise:

class RegistrationsController < Devise::RegistrationsController
   prepend_before_action :check_captcha, only: [:create]

   private

def check_captcha
  unless verify_recaptcha
    self.resource = resource_class.new sign_up_params
    resource.validate # Look for any other validation errors besides Recaptcha
    set_minimum_password_length
    respond_with resource
    # self.resource = resource_class.new sign_up_params
    # respond_with_navigational(resource) { render :new }
  end 
end

def after_inactive_sign_up_path_for resource
  new_user_session_path
end
end

Acheminement

Rails.application.routes.draw do
  devise_for :users, only: :omniauth_callbacks, controllers: {omniauth_callbacks: 'omniauth_callbacks'}

Portée '(: locale)',: locale => / en | ru / do

root :to => 'index#index'

devise_for :users, :controllers => {
                    :registrations => 'registrations',
                    :invitations => 'invitations'
                   },
                   :path => 'auth',
                   :path_names => {
                     :sign_in => 'login',
                     :sign_out => 'logout',
                     :password => 'secret',
                     :confirmation => 'verification',
                     :unlock => 'unblock',
                     :registration => 'register',
                     :sign_up => 'cmon_let_me_in'
                   }, 
                   skip: :omniauth_callbacks

   end

La ressource transmise à respond_with resource est valide. Qu'est-ce que c'est?!?!

0
127 23 mai 2018 à 00:40

4 réponses

Meilleure réponse

Maintenant en le contournant comme ça

def check_captcha
  return true if Rails.env.test?
  unless verify_recaptcha
    self.resource = resource_class.new sign_up_params
    resource.validate # Look for any other validation errors besides Recaptcha
    set_minimum_password_length
    respond_with resource
  end
end
0
127 23 mai 2018 à 20:19

Je pense à cause de vos opinions.

Vérifiez vos vues "/devise/registrations/new.html.erb" et assurez-vous de mettre <%= recaptcha_tags %> sur le bouton d'inscription / devise / registrations / new.html.erb

Et voici mes itinéraires simples: routes.rb

1
Sochetra Nov 6 juin 2018 à 07:50

Cette erreur se produit lorsque la ressource est elle-même valide, mais que le captcha n'a pas réussi. Devise pense que le modèle est persistant (mais il n'a été validé que) et essaie de le rediriger.

La solution consiste à remplacer respond_with resource par render :new dans la méthode check_captcha.

1
asiniy 16 juil. 2018 à 06:53

Ne fonctionne pas non plus sans recaptcha, vérifiez d'abord les documents de conception pour le faire fonctionner de manière autonome

0
grosser 4 juin 2018 à 15:55