【问题标题】:rails redirect_to :back not workingrails redirect_to :back 不工作
【发布时间】:2017-10-21 06:26:26
【问题描述】:

我正在尝试使用以下内容:

class PaymentsController < ApplicationController

  def addproduct
     (session[:products] ||= []) << params[:item]
     redirect_to :back
  end

 end

我遇到了这个异常:

undefined method `back_url' for #<PaymentsController:0x007ff682c467a8>

为什么会这样?

【问题讨论】:

  • 你在控制台得到ActionController::RedirectBackError吗?
  • 在控制台中我得到了我写的异常。
  • @Lechucico:您使用的是哪个版本的 Rails?从 Rails 5 开始,它是 redirect_back,带有一个后备选项。
  • rails 5.1.1 版本

标签: ruby-on-rails ruby redirect


【解决方案1】:

Rails 5 有 redirect_back,而不是 redirect_to :back。当请求的HTTP_REFERER 不存在时,它会引发异常。

所以用这个:

redirect_back fallback_location: root_path

您可以根据需要将root_path 更改为其他内容。

【讨论】:

  • 但这会将我重定向到 root_path?
  • @Lechucico :这就是重点。它只会重定向到 root_path,只有当没有办法重定向回请求发起的路径时。
【解决方案2】:

redirect_to :back 在 Rails 5.0 中被弃用(参见PR),然后在 Rails 5.1 中被删除

改用以下内容:

redirect_back(fallback_location: root_path)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2010-10-29
    • 1970-01-01
    • 2011-11-21
    • 2015-10-23
    • 2018-06-01
    相关资源
    最近更新 更多