【问题标题】:Rails: Controlling browser back buttonRails:控制浏览器后退按钮
【发布时间】:2013-12-02 20:55:50
【问题描述】:

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

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

我的控制器代码是:

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 表单使搜索词进入标准,标准进入参数
  7. 默认从浏览器提交输入
  8. 因为没有自定义路由,所以提交指向相同操作的点?
  9. 由于 params 具有条件,因此会呈现搜索结果/模板
  10. 点击用户,带你进入用户编辑
  11. 点击浏览器上的返回按钮,浏览器知道页面列表是用户索引作为最后一站,因为搜索结果不是单独的 URL 并且 HTML 是用 Javascript 呈现的?
  12. 需要让浏览器以某种方式重定向到搜索结果模板

谢谢!

【问题讨论】:

  • 能否请您添加您的控制器代码?
  • 在上面添加了

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    不确定,如果我理解正确的话,但这可能会解决你的问题

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

    【讨论】:

    • 这个方法需要你设置 request.env["HTTP_REFERER"] 值我个人不喜欢这种行为,因为除了处理资源成员动作时,每个动作都不应该有依赖关系。
    【解决方案3】:

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

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

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 2016-03-15
      • 2011-02-17
      • 1970-01-01
      • 2017-06-29
      相关资源
      最近更新 更多