代码之家  ›  专栏  ›  技术社区  ›  Petran

如何检查另一个控制器操作上是否存在重定向?

  •  2
  • Petran  · 技术社区  · 9 年前

    我正在从一个控制器重定向到另一个控制器。

    redirect_to :controller => :controller_name, :action => :action_name
    

    然后,在操作中,我要检查是否存在重定向

    def action_name
      #check if there wass redirected
    end
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   Shiva    9 年前

    推荐的方法如@Dimitris在另一个答案中所述,也可以这样做

    if some_condition
      flash[:redirect] = 'some value'
      redirect_to :controller => :controller_name, :action => :action_name
    end
    

    在另一个控制器中 controller_name

    def action_name
      if flash[:redirect] == 'value you set' # checks if came from redirection
        # your intended code here
      end
    end
    

    作为存储在中的值 闪光 哈希持久化在单个重定向上,您可以这样做,但要注意 闪光 因为它只在请求被响应后才持久存在于该请求上 闪光 值被刷新。 但是你可以坚持 关键字:值 你想坚持多久就坚持多久。有关更多信息,请阅读 这 http://guides.rubyonrails.org/action_controller_overview.html#the-flash

    或者你可以使用 Session 而不是 flash 但你必须清除 session 工作完成后的自我。在一天结束时, 闪光 也存储在 一场

        2
  •  0
  •   Dimitris Zorbas jejacks0n    9 年前

    您可以始终对referer执行特定检查,如:

    if request.referer =~ /controller-name-here/
      # code here
    end