Rails: Comment pouvez-vous accéder à des variables de session à l'aide de plusieurs contrôleurs?
Je vais avoir un problème avec l'utilisation des variables de session. J'ai deux contrôleurs nommé "graduate_students_controller" et "current_students_controller'. Chacun de ces contrôleurs de contrôle de vue différents fichiers. J'utilise des variables de session avec ces deux contrôleurs pour stocker les informations de session.
Voici le problème. Disons que j'ai deux fichiers "rapports/current_students_list', 'rapports/graduate_students_list' chaque contrôlé séparément par le ci-dessus mentionné contrôleurs.
Maintenant, si j'essaie d'ouvrir ces deux pages web à partir du même navigateur et essayez de travailler en même temps, j'ai obtenu un nul d'accès à l'objet' d'erreur tout d'abord à partir de la page chargée. Le "néant" objet " se réfère à une variable de session que la première page est censé accès. Cependant, lorsque j'utilise l'un de ces deux applications web, individuellement, qu'ils fonctionnent très bien.
Donc sa me semble que les variables de session de la tout d'abord chargé de l'application web. sont écrasés par l'deuxièmement chargé de l'application web. peut-être parce que la deuxième page des magasins d'un nouveau cookie sur le premier?
Comment puis-je résoudre ce problème?
Toute suggestion est très apprécié.
De préciser un peu plus: Les deux contrôleurs appartiennent à la même application Rails. Et je ne suis pas en utilisant les mêmes session, les noms de variables dans les deux contrôleurs. Donc je ne vois pas pourquoi ils peuvent être écrasés
Je suis nouveau sur les rails et je voudrais vraiment l'apprécier un peu d'aide avec ce problème. Merci.
Bonjour, je suis à l'aide de rails version 2.2.2. Et mes joyaux de la version spécifiée dans mon environnement.rb est comme suit: ----------- # Spécifie gem version de Rails à utiliser lors de l'vendor/rails n'est pas présent RAILS_GEM_VERSION = '1.2.3" à moins que défini? RAILS_GEM_VERSION --------------- (je ne suis pas en utilisant une version plus récente sur ma machine locale du moment que ce sont les paramètres actuels sur notre serveur de production. Et je veux tester mes applications selon eux) oui, ces contrôleurs et afficher les fichiers qui appartiennent à la même application Rails. Donc aucune idée de ce qui cause ce problème? Merci John
Juste pour préciser, les variables de session que ces deux contrôleurs d'accès n'ont pas de noms communs. Donc, il n'ya aucune raison pour une variable de session pour être remplacés, sauf si l'deuxièmement chargement de la page web est d'enregistrer un cookie sur l'existant(celui qui d'abord chargé de la page est stockée) ? C'est la seule raison logique je pense. Mais comment pouvez-vous fixer quelque chose comme cela? quelqu'un a rencontré une situation similaire avant?
OriginalL'auteur Vicer | 2009-07-12
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si vous êtes à court de deux applications, ou se référant à deux contrôleurs en vertu de la même application. Si vous cherchez à différentes applications web, alors je pense que vous êtes en utilisant le même nom et la clé de session dans votre environnement pour chacune de ces applications. Essayez de changer la valeur de la clé dans votre environnement.rb:
Si vous êtes en utilisant la même variable de session à partir de deux contrôleurs différents dans la même application, puis vous aurez besoin d'écrire votre code pour accueillir ce, bien que je ne recommande pas de faire cela. Lors de l'accès à vos données de session, vérifier néant valeurs:
et assurez-vous que le code commun (c'est à dire dans le application_controller.rb) n'est pas d'écraser vos valeurs.
Sans la clé de session doit être unique pour chaque application, pas les contrôleurs dans la même application. Je pense qu'il y a un bug quelque part dans votre application qui est l'effacement de la valeur de votre session. Je vous recommande de journalisation de la valeur des variables de session en haut de votre contrôleur de l'action, en ouvrant une session de nouveau à la fin. Voir si ils vont changer, et de le faire remonter à partir de là.
Salut Matt modification de la clé de session n'a résoudre le problème. Je vais essayer d'enquêter et de trouver ce qui était la cause. Il est assez frustrant de prob. Merci pour vos suggestions Matt.
Quand j'ai inséré "p session :session_key" à la fin de chaque contrôleur-je obtenir:.. [{:session_key => "_my_session_id"}, {:désactivé => true}, {:désactivé => true}].. est-ce à dire quoi que ce soit? Je suis nouveau sur le rubis. Quand j'ai mis "p session :session_key" au début, j'obtiens le même résultat mais avec un seul "{:désactivé => true}" au lieu de deux.
Salut, oui j'ai trouvé que reset_session est appelée dans chaque contrôleur lors de chaque page est chargée pour la première fois.Vous avez eu raison. J'ai changé de sorte que le contrôleur de réinitialiser uniquement les variables qu'il a déclaré et non pas l'ensemble de la collection lorsqu'elle est appelée. Merci beaucoup de m'aider à voir le problème.
OriginalL'auteur Codebeef