Rails redirect_to: назад не работает

Я пытаюсь использовать следующее:

class PaymentsController < ApplicationController

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

 end

Я получил это исключение:

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

Почему это происходит?

Ответ 1

Rails 5 имеет redirect_back вместо redirect_to :back. Он был изменен, поскольку он использовал для создания исключения, когда запрос HTTP_REFERER не присутствовал.

Поэтому используйте это:

redirect_back fallback_location: root_path

Вы можете изменить root_path на что-то еще в соответствии с вашими требованиями.

Ответ 2

redirect_to :back устарел в Rails 5.0 (см. PR), а затем удален в Rails 5.1

Вместо этого используйте следующее:

redirect_back(fallback_location: root_path)