0

ユーザーがログインしていなくても、公開ページのプレビューを表示できるようにしています。公開ページにはログイン リンクがあり、ユーザーがログイン ページにリダイレクトされてログインすると、保存されている public_page にリダイレクトされます。

私が探しているのは、ユーザーがログインせずにプレビューしている public_page から離れたときに clear_location メソッドを呼び出す方法です。現在、ユーザーがプレビュー ページにアクセスしてから、ホームページに戻ってログインした場合そこから、見ていたプレビュー ページに戻ります。

def page_public
  store_location
end

def store_location
  session[:current_location] = request.fullpath
end  

def clear_location
  session[:current_location] = nil
end
4

1 に答える 1

2

ログインページ以外のページにアクセスしたときにclear_locationを呼び出したいように聞こえます。それが正しいと仮定すると、ApplicationControllerにbefore_filterが必要になる可能性があります。これは、ログインに関連するアクションをスキップします。おそらく次のようになります。

class ApplicationController < ActionController::Base
  before_filter :clear_location

  ...

  def clear_location
    session[:current_location] = nil
  end
end

class LoginController < ApplicationController
  skip_before_filter :clear_location, :only => [:login]

  ...
end

もちろん、どのコントローラーがログインを処理するのか、正確にはどのアクションが関係するのかはわかりませんが、これらの線に沿った何かが仕事を成し遂げるはずです。

于 2012-07-18T22:00:19.373 に答える