ruby on rails知道你何时来自redirect_back

时间:2017-05-21 17:47:31

标签: ruby-on-rails ruby redirect

我想知道你是否知道何时来自redirect_back。如果我来自这里,我想在我的HTML上显示一个弹出窗口:

class PaymentsController < ApplicationController

  def addproduct
     (session[:products] ||= []) << params[:item]
     redirect_back(fallback_location: "/")
  end

 end

有什么办法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用request.referrer

您可以使用request[:controller]和/或request[:action]查看来自的控制器和操作(方法)。

将其放入app/layouts/application.html.erb,您就可以看到每个推荐人:

<%= request[:controller] %>
<%= request[:action] %>

答案 1 :(得分:2)

这有点hacky但它​​可以工作,redirect_back的定义接受fallback_locationargs。所以也许你可以使用flash来传递像:

这样的论点
# controller
redirect_back(fallback_location: "/", flash: { from_add_product: true } )

# view
<% if flash[:from_add_product] %>
  # show popup
<% end %>

另一种选择是使用request.referer来检查网址:

# view or a helper
<% if request.referer && request.referer =~ /payments\/addproduct/ %>
  # show popup
<% end %>