これが本当にばかげた質問であるか、私が本当に愚かなことをした場合、私はまだ初心者です。私はセッションタイムアウトメカニズムを実装しようとしていますが、これについてSOでいくつかの有用な質問/回答を見つけました。last_seen時間をセッション変数として追加し、これをアプリケーションコントローラーのbefore_filterでチェックしています。これは、設定された間隔を超えると、ユーザーをログオンページに戻します。
アプリケーションコントローラー
reset_session if session[:last_seen] < 1.minutes.ago
if session[:user_id] == nil
redirect_to login_path, notice: "Please log in"
return
end
session[:last_seen] = Time.now
これはほとんどのページで正常に機能しますが、タブが選択されているときにjqueryを使用してパーシャルを使用してコンテンツを変更する、タブ付きのページがいくつかあります。
リンクコード:
<li class="<%=get_active('index_audit','ultra')%>"><%= link_to 'Load IT Estate', ultraaudit_path, remote: true %> </li>
コントローラーコード:
def index_audit
@subscription = current_subscription
respond_to do |format|
format.js
end
end
divをレンダリングされたパーシャルに置き換えるJSを持つindex_audt.jsがあります
タイムアウトが発生し、次のアクションがタブをクリックして次のページをレンダリングする場合、コードは実行されますが、ブラウザにログインページは表示されません。
RubyMineでデバッグしていると、コンソールにログインページ(sessions / new)をレンダリングしようとしていることが表示されます。
Processing by UltraController#index_audit as JS
Parameters: {"locale"=>"en-GB"}
Redirected to http://localhost:3000/?locale=en-GB
Filter chain halted as :logged_in rendered or redirected
Completed 302 Found in 6ms (ActiveRecord: 0.0ms)
Started GET "/?locale=en-GB" for 127.0.0.1 at 2012-06-14 11:28:44 +0100
Processing by SessionsController#new as JS
Parameters: {"locale"=>"en-GB"}
Rendered sessions/new.html.erb within layouts/application (16.0ms)
Completed 200 OK in 323ms (Views: 320.6ms | ActiveRecord: 0.0ms)
しかし、それはブラウザに表示されません
index_auditコントローラーメソッドの先頭にリダイレクトを配置しようとしましたが、同じ問題があります。私の理論では、リモート:trueが原因ですが、それを修正するために何をすべきかわかりません。誰か助けてもらえますか?