6

セッション変数の使用に問題があります。「graduate_students_controller」と「current_students_controller」という名前の2つのコントローラーがあります。これらの各コントローラーは、異なるビューファイルを制御します。これらのコントローラーの両方でセッション変数を使用して、セッション情報を格納しています。

ここに問題があります。2つのビューファイル'reports/ current_students_list'、'reports /graduate_students_list'があり、それぞれが上記のコントローラーによって個別に制御されているとします。

同じブラウザ内からこれらの2つのWebページを開こうとすると、それらを同時に操作しようとすると、最初にロードされたページから「nilobjectaccess」エラーが発生します。'nilオブジェクト'は、最初のページがアクセスすることになっているセッション変数を参照します。ただし、これら2つのWebアプリケーションのいずれかを個別に使用すると、正常に機能します。

したがって、最初にロードされたWebアプリのセッション変数は私には思えます。2番目にロードされたWebアプリによって上書きされています。おそらく、2番目のページが最初のページの上に新しいCookieを保存しているためですか?

これを修正するにはどうすればよいですか?

どんな提案でも大歓迎です。

もう少し明確にするために:2つのコントローラーは同じRailsアプリケーションに属しています。また、両方のコントローラー内で同じセッション変数名を使用していません。だからなぜ彼らが上書きされるのか分かりません

私はレールに不慣れであり、この問題について助けていただければ幸いです。ありがとう。

4

1 に答える 1

5

2 つのアプリを実行しているのか、同じアプリで 2 つのコントローラーを参照しているのかわかりません。さまざまな Web アプリを検討している場合、環境内でこれらのアプリごとに同じ名前とセッション キーを使用していると思います。environment.rb でキーの値を変更してみてください。

config.action_controller.session = { :key => "_myapp_session", :secret => "..." }

同じアプリケーションで 2 つの異なるコントローラーから同じセッション変数を使用している場合は、これに対応するコードを作成する必要がありますが、これを行うことはお勧めしません。セッション データにアクセスするときは、nil 値を確認します。

session[:some_key].nil?

共通コード (つまり、application_controller.rb 内) が値を上書きしていないことを確認してください。

于 2009-07-13T08:49:33.540 に答える