Rails:控制浏览器后退按钮

时间:2013-12-02 20:55:50

标签: ruby-on-rails ruby ruby-on-rails-3 views

我有一个用户索引操作,可根据参数将某人定向到不同的页面。目前,当用户传入搜索参数并且我呈现自定义视图模板时,当用户点击用户时,它会转到他们的用户编辑页面。我希望浏览器上的后退按钮返回自定义视图,如果用户来自的话。但是,无论如何,它都会继续回到用户索引。

我应该怎样做才能使浏览器返回按钮返回到用户来自的最后一页?

我的控制器代码是:

def index
  @criteria = params[:criteria]
  respond_to do |format|
    format.js {
      unless @criteria.blank? || @criteria.length < 3
        @results = fire(@criteria) 
        render :template =>'admin/users/search_user', :object =>  @results, :locals => { :autocomplete => true, :criteria => @criteria }
      else
        @users = User.paginate :page => params[:page], :order => "users.created_at desc"
        render :template =>'admin/users/users', :object =>  @users, :locals => { :autocomplete => true, :criteria => @criteria }
      end
    }
    format.html {
        @users = User.paginate :page => params[:page], :order => "users.created_at desc"
    }
  end
end

这是我对流程的理解:

  1. 用户点击用户链接
  2. 路由默认为用户索引
  3. 操作加载数据并呈现模板
  4. 模板显示
  5. 搜索参数中的用户类型
  6. html表单使搜索词以critera格式进入params
  7. 默认情况下从浏览器提交
  8. 输入
  9. 由于没有自定义路线,因此将点数提交给同一行动?
  10. 由于params具有标准,因此呈现搜索结果/模板
  11. 点击用户,转到用户编辑
  12. 点击浏览器上的后退按钮,浏览器知道页面列表是用户索引作为最后一站,因为搜索结果不是单独的URL并且HTML是使用Javascript呈现的吗?
  13. 需要让浏览器以某种方式重定向到搜索结果模板
  14. 谢谢!

3 个答案:

答案 0 :(得分:3)

试试<%= link_to 'Back', 'javascript:history.go(-1);' %>。它将为您提供与浏览器后退按钮完全相同的功能。

答案 1 :(得分:1)

不确定,如果我理解正确,但这可以解决您的问题,也许

<%= link_to "Back", :back %>

答案 2 :(得分:0)

您所描述的基本上是友好的转发。在这种情况下,您无法覆盖浏览器的默认行为(除非您想深入了解JavaScript的漏洞),但您可以通过遵循类似的模式来实现用户友好的功能:

http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#sec-friendly_forwarding

无论如何,希望有所帮助。