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

时间:2015-09-16 23:11:53

标签: ruby-on-rails http-redirect

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

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

然后在动作上我想检查是否有重定向

def action_name
  #check if there wass redirected
end

2 个答案:

答案 0 :(得分:1)

推荐的方式是@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
  

由于存储在 flash 哈希值中的值会在单个重定向中保留,您可以这样做但请注意 flash.now ,因为它仅在请求后仅保留在该请求上响应 flash.now 值被刷新。   但是,您可以根据需要持久保存键:值。欲了解更多信息   此。http://guides.rubyonrails.org/action_controller_overview.html#the-flash

或者只是您可以使用Session代替flash,但是您必须在工作完成后清除session您的自我。在一天结束时,flash也会存储在session

答案 1 :(得分:0)

您可以随时对引用者执行特定检查,如:

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