From f31d53bea8235037433e16f81354b9fbb371c7bb Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Wed, 18 Jun 2025 15:51:33 +0300 Subject: [PATCH] Redirect to referer from preferences --- app/controllers/preferences/preferences_controller.rb | 5 +++-- .../preferences/basic_preferences_controller_test.rb | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/controllers/preferences/preferences_controller.rb b/app/controllers/preferences/preferences_controller.rb index 3bb89e034..f74107fa8 100644 --- a/app/controllers/preferences/preferences_controller.rb +++ b/app/controllers/preferences/preferences_controller.rb @@ -15,8 +15,9 @@ module Preferences def update if update_preferences # Use a partial so that it is rendered during the next page load in the correct language. - flash[:notice] = { :partial => "update_success_flash" } - redirect_to :action => :show + flash[:notice] = { :partial => "preferences/preferences/update_success_flash" } + referer = safe_referer(params[:referer]) if params[:referer] + redirect_to referer || { :action => :show } else flash.now[:error] = t "failure", :scope => "preferences.preferences.update" render :show diff --git a/test/controllers/preferences/basic_preferences_controller_test.rb b/test/controllers/preferences/basic_preferences_controller_test.rb index 848659c4d..f672eeb0e 100644 --- a/test/controllers/preferences/basic_preferences_controller_test.rb +++ b/test/controllers/preferences/basic_preferences_controller_test.rb @@ -61,6 +61,12 @@ module Preferences assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v end + def test_update_with_referer + session_for(create(:user)) + put basic_preferences_path, :params => { :referer => root_path } + assert_redirected_to root_path + end + def test_update_preferred_language_from_en_selecting_fr check_language_change %w[en], "fr", %w[fr] end -- 2.39.5