Concevoir des Aides (authenticate_user!, current_user, user_signed_in?) pas initialisé
Je suis en train d'ouvrir concevoir et doivent être en mesure d'utiliser de concevoir des aides.
Quand j'ajoute before_filter :authenticate_user!
dans le contrôleur de l'application, j'obtiens l'erreur suivante undefined method 'authenticate_user!' for #<HomeController:*>
Il n'est pas présent dans ma maison contrôleur directement, mais a hérité de l'application du contrôleur, si j'utilise skip_before_filter :authenticate_user!
dans ma maison (ou n'importe quel contrôleur) et essayez d'accéder à la page j'obtiens l'erreur suivante.
undefined method `user_signed_in?' for #<#<Class *>
Il se casse sur la ligne que dans les mises en page/de l'application.html.erb fichier qui l'appelle. La même chose se produit pour une des aides. Il semble que si elles ne sont pas chargés à tous, cependant, quand j'ai chargé la console rails, et est entré $LOAD_PATH.dup
la sortie inclus
"/usr/local/rvm/gems/ruby-1.9.3-p429/gems/devise-2.2.4/lib", "/usr/local/rvm/gems/ruby-1.9.3-p429/gems/devise-2.2.4/app/controllers", "/usr/local/rvm/gems/ruby-1.9.3-p429/gems/devise-2.2.4/app/helpers", "/usr/local/rvm/gems/ruby-1.9.3-p429/gems/devise-2.2.4/app/mailers"
Il semble donc qu'ils devraient en effet être chargé par les rails.
C'est mon contrôleur d'application
classe ApplicationController < ActionController::Base
helper :tous les # include tous les assistants, tout le temps
protect_from_forgery
inclure ActionView::Assistants::NumberHelper
before_filter :authenticate_user!fin
Je n'ai redémarrer le serveur après l'installation de concevoir, et plusieurs fois j'ai essayé différentes tentatives pour résoudre le problème.
Si plus des fichiers ou des informations est nécessaire s'il vous plaît laissez-moi savoir. Merci beaucoup à l'avance.
Edit: Mon utilisateur.rb fichier a été demandé de montrer que j'ai en effet installé concevoir
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:encryptable, :encryptor => :restful_authentication_sha1
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
Edit: Le message d'erreur entier
NoMethodError dans HomeController#index
undefined method `authenticate_user! " pour #< HomeController:0x000000040c45a0 > '
Ici est la trace complète
activesupport (3.2.13) lib/active_support/rappels.rb:418:dans "leexécuter_2094683035699451847__processus d'_action_2229546931289158113_callbacks'
activesupport (3.2.13) lib/active_support/rappels.rb:405:dans `__exécutez_callback'
activesupport (3.2.13) lib/active_support/rappels.rb:385:dans >`_run_process_action_callbacks'
activesupport (3.2.13) lib/active_support/rappels.rb:81:dans "le run_callbacks'
actionpack (3.2.13) lib/abstract_controller/rappels.rb:17:dans "le process_action'
actionpack (3.2.13) lib/action_controller/en métal/de sauvetage.rb:29:dans "le process_action'
actionpack (3.2.13) lib/action_controller/en métal/de l'instrumentation.rb:30:dans "le bloc dans process_action'
activesupport (3.2.13) lib/active_support/notifications.rb:123:dans " le bloc d'instrument
activesupport (3.2.13) lib/active_support/notifications/instrumenter.rb:20:dans l ` "instrument"
activesupport (3.2.13) lib/active_support/notifications.rb:123:dans l ` "instrument"
actionpack (3.2.13) lib/action_controller/en métal/de l'instrumentation.rb:29:dans "le process_action'
actionpack (3.2.13) lib/action_controller/métal/params_wrapper.rb:207:en `process_action'
actionpack (3.2.13) lib/abstract_controller/base.rb:121:dans "processus"
actionpack (3.2.13) lib/abstract_controller/rendu.rb:45:dans "processus"
actionpack (3.2.13) lib/action_controller/métal.rb:203:dans `envoi'
actionpack (3.2.13) lib/action_controller/métal/rack_delegation.rb:14:dans `envoi'
actionpack (3.2.13) lib/action_controller/métal.rb:246:dans le bloc "en action"
actionpack (3.2.13) lib/action_dispatch/routage/route_set.rb:73:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/routage/route_set.rb:73:dans `envoi'
actionpack (3.2.13) lib/action_dispatch/routage/route_set.rb:36: "appel"
voyage (1.0.4) lib/voyage/routeur.rb:68:dans le bloc "en appel"
voyage (1.0.4) lib/voyage/routeur.rb:56:dans `chaque'
voyage (1.0.4) lib/voyage/routeur.rb:56:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/routage/route_set.rb:612:dans `l'appel'
warden (1.2.1) lib/gardien/manager.rb:35:dans le bloc "en appel"
warden (1.2.1) lib/gardien/manager.rb:34:dans "attraper"
warden (1.2.1) lib/gardien/manager.rb:34:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/middleware/best_standards_support.rb:17:dans `l'appel'
rack (1.4.5) lib/rack/etag.rb:23:dans `l'appel'
rack (1.4.5) lib/rack/conditionalget.rb:25:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/middleware/tête.rb:14:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/middleware/params_parser.rb:21:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/middleware/flash.rb:242:dans `l'appel'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:dans le "contexte"
rack (1.4.5) lib/rack/session/abstract/id.rb:205:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/middleware/cookies.rb:341:dans `l'appel'
activerecord (3.2.13) lib/active_record/query_cache.rb:64:dans `l'appel'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/middleware/rappels.rb:28:dans le bloc "en appel"
activesupport (3.2.13) lib/active_support/rappels.rb:405:dans "leexécuter_177144612565476380_appel_4534346825225857812__rappels'
activesupport (3.2.13) lib/active_support/rappels.rb:405:dans `__exécutez_callback'
activesupport (3.2.13) lib/active_support/rappels.rb:385:dans "le _run_call_callbacks'
activesupport (3.2.13) lib/active_support/rappels.rb:81:dans "le run_callbacks'
actionpack (3.2.13) lib/action_dispatch/middleware/rappels.rb:27: "appel"
actionpack (3.2.13) lib/action_dispatch/middleware/reloader.rb:65:dans `l'appel'
actionpack (3.2.13) lib/action_dispatch/middleware/remote_ip.rb:31:en "appel"
actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:16: "appel"
actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:dans `l'appel'
railties (3.2.13) lib/rails/rack/logger.rb:32:dans "le call_app'
railties (3.2.13) lib/rails/rack/logger.rb:16:dans le bloc "en appel"
activesupport (3.2.13) lib/active_support/tagged_logging.rb:22:dans le `tagged'
railties (3.2.13) lib/rails/rack/logger.rb:16: "appel"
actionpack (3.2.13) lib/action_dispatch/middleware/request_id.rb:22:dans `l'appel'
rack (1.4.5) lib/rack/methodoverride.rb:21:dans `l'appel'
rack (1.4.5) lib/rack/runtime.rb:17:dans `l'appel'
activesupport (3.2.13) lib/active_support/cache/stratégie/local_cache.rb:72:dans `l'appel'
rack (1.4.5) lib/rack/lock.rb:15: "appel"
actionpack (3.2.13) lib/action_dispatch/middleware/statique.rb:63:dans `l'appel'
railties (3.2.13) lib/rails/moteur.rb:479:dans `l'appel'
railties (3.2.13) lib/rails/de l'application.rb:223:dans `l'appel'
railties (3.2.13) lib/rails/railtie/configurable.rb:30:en `method_missing'
passager (4.0.2) lib/phusion_passenger/rack/thread_handler_extension.rb:77:dans "le process_request'
passager (4.0.2) lib/phusion_passenger/request_handler/thread_handler.rb:135:en `accept_and_process_next_request'
passager (4.0.2) lib/phusion_passenger/request_handler/thread_handler.rb:106: `main_loop'
passager (4.0.2) lib/phusion_passenger/request_handler.rb:449:dans "le bloc (4 niveaux) dans start_threads'
passager (4.0.2) lib/phusion_passenger/utils/robust_interruption.rb:108:dans "le disable_interruptions'
passager (4.0.2) lib/phusion_passenger/request_handler.rb:444:dans "le bloc (3 niveaux) dans start_threads'
Edit: C'est le texte de l'exécution de Concevoir.les aides à la console.
$ rails console
Chargement environnement de développement (Rails 3.2.13)
1.9.3-p429 :001 > Concevoir.les aides
=> #< Set: {Concevoir::Contrôleurs::Aides} >
Edit: Ce mes itinéraires rb fichier.
:Demande.les itinéraires.dessiner ne
devise_for :users
resource :sessions, :only => [:new, :create, :destroy]
devise_scope :user do
match 'signup' => 'users#new', :as => :signup
match 'register' => 'users#create', :as => :register
match '/login' => 'sessions#new', :as => :login
match 'logout' => 'sessions#destroy', :as => :logout
end
match '/activate/:activation_code' => 'users#activate', :as => :activate, :activation_code => nil
match '/users/:id', :to => 'users#show', :as => :user
resources :users do
member do
put :suspend
put :unsuspend
delete :purge
end
end
resource :sessions
other resources
match '' => 'home#index', :as => :home
match ':controller(/:action(/:id))'
root to: 'home#index'
end
- essayez d'expérimenter avec devise_for dans les itinéraires.rb peut-être il y a une erreur dans le parcours d'installation / namespacing question. Essayez
rake routes
pour voir si ils sont configurés correctement. J'ai eu un problème de ce genre avant et directement liée aux mauvaises routes d'installation - pourquoi les aides d'être touchés par une mauvaise route?
Vous devez vous connecter pour publier un commentaire.
Assurez-vous d'ajouter
devise_for :user
dans votreroutes.rb
Voir plus ici: https://stackoverflow.com/a/11180576
devise_for :user
au niveau de la racine afin d'obtenir leauthenticate_user!
méthode à définir, même si j'ai seulement besoin dedevise_for :user
dans unapi/v1
espace de noms.root
niveau etapi/v1
)? ou avez-vous mis ladevise_for
àroot
niveau?Suffit de redémarrer votre serveur rails.
"Notez que vous devez re-démarrer votre application ici si vous avez déjà commencé.
Sinon, vous allez rencontrer des erreurs étranges comme les utilisateurs étant incapables de login et la route aides étant pas défini." [Mise En Route Des Instructions]
[modifier] réponse Plus détaillée:
Veuillez vérifier deux choses: Votre contrôleur HomeController devrait hériter de Concevoir::Contrôleurs::Helpers. Et le dispositif de la directive en cours de route.rb (qui génère le manque de méthode dans les Aides) doit avoir étendu Devise.@@mappings. Le code suivant peut vérifier:
D'introduire un problème similaire, dans une application rails le fichier config/initializers/concevoir.rb et le fichier config/routes.rb concevoir les inscriptions devront être désactivé et rails doit être redémarré. La réactivation du code ne résoudra pas le problème, sauf si les rails est redémarré.
Devise::Controllers::Helpers
. Maintenant, je dois comprendre pourquoi.Il y a beaucoup de choses qui peuvent mal se passer. Quelques points à vérifier dans l'ordre:
before_filter :authenticate_user!
indique que concevoir est pas correctement mis en place.devise_for :users
dans les itinéraires.rb (son utilisateurs, vous avez obtenu ce droit), à côté de simplifier celles dont l'étendue des règles pour les essais.before_filter :authenticate_user!
de travail pour obtenir les aides dans le contrôleur ou d'inclure les aides manuellementhelper_method "current_user", "user_signed_in?", "user_session"
self.controller.current_user
travail dans votre erb? Cela peut indiquer que la helper_methods n'étant pas inclus.J'ai ajouté cette ligne dans mon contrôleur qui a fait le tour pour moi:
J'ai eu le même problème (Rails 5.1.2, Concevoir 4.3.0) et il est arrivé à être que j'ai été en utilisant :-
au lieu de
Je l'ai corrigé en modifiant l'espace de noms.
J'ai eu le même problème suite à Concevoir du guide de mise en route.
S'avère que j'avais tort exécuter
rails generate model User
plutôt querails generate devise User
, qui venez de créer une plaine ActiveRecord modèle qui est arrivé à avoir le nom de l'Utilisateur".