当用户离开视图时调用Rails控制器方法

时间:2012-07-18 21:33:12

标签: ruby-on-rails controller

我正在让用户能够查看公共页面的预览,即使他们没有登录。公共页面有一个登录链接,并且在用户被重定向到登录页面并登录后,他们被重定向回存储的公共页面。

我正在寻找的是一种在用户导航离开他们正在预览的公共页面而无需登录时调用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

1 个答案:

答案 0 :(得分: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

当然,我不知道哪个控制器处理您的登录,或者确切涉及哪些操作,但是这些内容应该可以完成工作。