на основе ответа @Georg Ledermann. Я делаю этот небольшой фрагмент кода для перенаправления на путь редактирования, если пользователь нажимает кнопку «Назад», а затем нажимает «Создать».
#objects_controller.rb
def new
@object = Object.new
@stale_form_check = Time.now.to_i
end
def create
@object = Object.new(object_params)
#function defined in application_controller.rb
redirect_to_on_back_and_create(@object)
end
#application_controller.rb
private
def redirect_to_on_back_and_create(object)
if session[:last_stale].present? and session[:last_stale_id].present? and session[:last_stale].to_i == params[:stale_form_check].to_i
redirect_to edit_polymorphic_path(object.class.find(session[:last_stale_id].to_i)), alert: "Este #{object.model_name.human} ya ha sido creado, puedes editarlo a continuación"
else
if object.save
session[:last_stale] = params[:stale_form_check].to_i
session[:last_stale_id] = object.id
redirect_to object, notice: "#{object.model_name.human} Creado con éxito"
else
render :new
end
end
end
Инаконец, добавьте параметр @stale_form_check к вашей форме
<%= hidden_field_tag :stale_form_check, @stale_form_check %>
Вы всегда можете абстрагировать этот метод там, где он вам нужен, но таким образом вы можете избежать большого количества повторений в вашем проекте, если вам нужно такое поведение во многих частях
Надеюсь, что это поможет в следующем, я использовал гем redirect_on_back, но на этот раз он не работал для меня, параметр _usec, который использует этот гем, всегда сбрасывался, поэтому он не может сравниватьсяв каждый раз, когда это было необходимо