From b10e67e24512ed72471a1eabfdff99c0fcd3e83b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20V=C3=A1squez?= Date: Wed, 20 May 2026 18:04:36 -0600 Subject: [PATCH] Preserve filters when cloning archived puzzle Use redirect_back so the Archived list keeps active filters (low_success_rate, hide_cloned_puzzles) after a clone. --- app/controllers/puzzles/clones_controller.rb | 4 ++-- test/controllers/puzzles/clones_controller_test.rb | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/controllers/puzzles/clones_controller.rb b/app/controllers/puzzles/clones_controller.rb index 264636b..e02cb75 100644 --- a/app/controllers/puzzles/clones_controller.rb +++ b/app/controllers/puzzles/clones_controller.rb @@ -4,9 +4,9 @@ def create cloned_puzzle = original_puzzle.clone_puzzle if cloned_puzzle.persisted? - redirect_to puzzles_path, notice: "Puzzle cloned. You can now edit the new puzzle." + redirect_back fallback_location: puzzles_path, notice: "Puzzle cloned. You can now edit the new puzzle." else - redirect_to puzzles_path, alert: "Failed to clone puzzle." + redirect_back fallback_location: puzzles_path, alert: "Failed to clone puzzle." end end end diff --git a/test/controllers/puzzles/clones_controller_test.rb b/test/controllers/puzzles/clones_controller_test.rb index 87446d7..78b2f46 100644 --- a/test/controllers/puzzles/clones_controller_test.rb +++ b/test/controllers/puzzles/clones_controller_test.rb @@ -22,6 +22,16 @@ class Puzzles::ClonesControllerTest < ActionDispatch::IntegrationTest assert_equal "pending", cloned.state end + test "redirects back to referer to preserve filters" do + original = puzzles(:one) + referer = puzzles_path(hide_cloned_puzzles: true, low_success_rate: true) + + sign_in + post puzzle_clone_path(original), headers: { "HTTP_REFERER" => referer } + + assert_redirected_to referer + end + test "does not allow unauthenticated users to create a clone" do original = puzzles(:one)