Есть ли простой способ написать вспомогательный метод, чтобы всегда обновлять ранее посещаемый URL-адрес в сеансе. Я пробовал метод ниже, но сохраненный url всегда является текущим. Я хотел бы иметь возможность использовать этот помощник во всех моих контроллерах для перенаправления.Ruby on rails: предыдущий помощник URL для всего приложения
#application_controller.rb
class ApplicationController < ActionController::Base
before_filter :my_previous_url
def my_previous_url
session[:previous_url] = request.referrer
end
helper_method :my_previous_url
end
Я использовал его в моем методе обновления в контроллере пользователя, как показано ниже, но он всегда перенаправляет на ту же открытой URL (вид выглядит как обновление было хита).
def update
if current_user.admin == true and @user.update(user_params)
redirect_to my_previous_url, notice: "Password for User #{@user.username} has Successfully been Changed."
return
elsif current_user.admin == false and @user.update(user_params)
session[:user_id] = nil
redirect_to login_path, notice: "Password for User #{@user.username} has Successfully been Changed. Please Log-In Using the New Password."
return
end
respond_to do |format|
if @user.update(user_params)
changed = true
format.html { redirect_to logout_path }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Что я хочу сделать то, что пользователи могут изменить свой пароль с главной страницы, форма будет отображаться для изменения пароля. Также к этой же форме редактирования могут обращаться админы с другой страницы. Я хотел бы перенаправить каждого человека на свою исходную страницу доступа после отправки или отмены формы. Я пробовал ваш код, и моя страница все еще обновляется. Итак, моя идея: мне нужно знать, откуда пользователи обратились к форме, и единственный способ, которым я могу думать, это предыдущий метод url. – Mais