L'accès concevoir current_user variable dans les rails contrôleur
J'ai Rails (4.0) l'exécution de Concevoir des gem (3.1.0) à l'aide de modèle User
. J'ai contrôleur nommé CollectionsController
et je veux me connecté en utilisateur de l'objet à Concevoir la méthode d'accesseur current_user
dans ce contrôleur.
Et après qu'il renvoie undefined local variable or method 'current_user' for CollectionsController:Class
. La chose la plus intéressante est que quand je suis en train de faire la même chose dans un autre contrôleur, par exemple PagesController
— tout fonctionne parfaitement!
UPD: partage le "code" de mon contrôleur 🙂
class CollectionsController < ActionController::Base
def index
@user = current_user
end
end
la source de current_user
méthode est définie par Concevoir, pas moi. Donc je ne pense pas que ce soit le problème.
C'est que le code placé dans une action ou tout simplement dans le milieu de la manette comme ça?
ouais, désolé, il est placé à l'intérieur de
index
actionEst-il une raison pourquoi vous êtes héritant de ActionController::Base, plutôt que de ApplicationController?
Les gars, désolé, j'ai trouvé le problème. Le cas est le dossier que j'ai créé dans le dossier controllers à des fins de sauvegarde et il semble qu'il y avait une sorte de conflit ou quoi. Quand je l'ai supprimé tout a commencé à travailler. Comme pour hériter de
ActionController::Base
non, il n'y a pas de raison. J'ai juste essayé toutes les options disponibles dans le désespoir 🙂 Et ça ne fonctionne pas avec les deux.OriginalL'auteur Dima Knivets | 2013-10-02
Vous devez vous connecter pour publier un commentaire.
current_user
agit d'une méthode pratique mis à disposition par ImaginerApplicationController
. Votre contrôleur doit être héritant de:Il semble que vous peut être l'amalgame entre la
ActiveRecord::Base
(sous-classé selon les modèles) avecActionController
(sous-classé par les contrôleurs). Selon Rails docs:OriginalL'auteur zeantsoi
Ajouter
before_action :authenticate_user!
de votre contrôleur.voir:
https://github.com/plataformatec/devise#controller-filters-and-helpers
OriginalL'auteur Yuki Matsukura
J'ai eu le même problème. Certains contrôleurs pouvaient accéder à
current_user
et d'autres ne pouvaient pas. Dans un cas, on a unerb
fichier qui a été accéder àcurrent_user
mais seulement après avoir demandéuser_signed_in?
j'ai ajouté que l'enregistrement dans mon contrôleur de code et le tour est joué!current_user
était disponible.OriginalL'auteur user3468739
Ajouter (inclure Concevoir::Contrôleurs::Aides) dans votre contrôleur comme indiqué ci-dessus.
OriginalL'auteur Shekhar Patil