diff --git a/app/controllers/admin/hidden_budget_investments_controller.rb b/app/controllers/admin/hidden_budget_investments_controller.rb index c55ab3ef6..6b977cdd3 100644 --- a/app/controllers/admin/hidden_budget_investments_controller.rb +++ b/app/controllers/admin/hidden_budget_investments_controller.rb @@ -15,14 +15,14 @@ class Admin::HiddenBudgetInvestmentsController < Admin::BaseController def confirm_hide @investment.confirm_hide - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end def restore @investment.restore(recursive: true) @investment.ignore_flag Activity.log(current_user, :restore, @investment) - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end private diff --git a/app/controllers/admin/hidden_comments_controller.rb b/app/controllers/admin/hidden_comments_controller.rb index b3f64688f..fc778a1a6 100644 --- a/app/controllers/admin/hidden_comments_controller.rb +++ b/app/controllers/admin/hidden_comments_controller.rb @@ -10,14 +10,14 @@ class Admin::HiddenCommentsController < Admin::BaseController def confirm_hide @comment.confirm_hide - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end def restore @comment.restore(recursive: true) @comment.ignore_flag Activity.log(current_user, :restore, @comment) - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end private diff --git a/app/controllers/admin/hidden_debates_controller.rb b/app/controllers/admin/hidden_debates_controller.rb index de9610972..b5a4ea502 100644 --- a/app/controllers/admin/hidden_debates_controller.rb +++ b/app/controllers/admin/hidden_debates_controller.rb @@ -13,14 +13,14 @@ class Admin::HiddenDebatesController < Admin::BaseController def confirm_hide @debate.confirm_hide - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end def restore @debate.restore!(recursive: true) @debate.ignore_flag Activity.log(current_user, :restore, @debate) - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end private diff --git a/app/controllers/admin/hidden_proposals_controller.rb b/app/controllers/admin/hidden_proposals_controller.rb index 9dea18a07..8ee137140 100644 --- a/app/controllers/admin/hidden_proposals_controller.rb +++ b/app/controllers/admin/hidden_proposals_controller.rb @@ -14,14 +14,14 @@ class Admin::HiddenProposalsController < Admin::BaseController def confirm_hide @proposal.confirm_hide - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end def restore @proposal.restore(recursive: true) @proposal.ignore_flag Activity.log(current_user, :restore, @proposal) - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end private diff --git a/app/controllers/admin/hidden_users_controller.rb b/app/controllers/admin/hidden_users_controller.rb index 31578c94e..fef56a94e 100644 --- a/app/controllers/admin/hidden_users_controller.rb +++ b/app/controllers/admin/hidden_users_controller.rb @@ -15,13 +15,13 @@ class Admin::HiddenUsersController < Admin::BaseController def confirm_hide @user.confirm_hide - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end def restore @user.restore Activity.log(current_user, :restore, @user) - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end private diff --git a/app/controllers/admin/organizations_controller.rb b/app/controllers/admin/organizations_controller.rb index a001e6875..1a5367286 100644 --- a/app/controllers/admin/organizations_controller.rb +++ b/app/controllers/admin/organizations_controller.rb @@ -19,11 +19,11 @@ class Admin::OrganizationsController < Admin::BaseController def verify @organization.verify - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end def reject @organization.reject - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end end diff --git a/app/controllers/admin/proposal_notifications_controller.rb b/app/controllers/admin/proposal_notifications_controller.rb index a591eef83..cff3d6f9d 100644 --- a/app/controllers/admin/proposal_notifications_controller.rb +++ b/app/controllers/admin/proposal_notifications_controller.rb @@ -12,14 +12,14 @@ class Admin::ProposalNotificationsController < Admin::BaseController def confirm_hide @proposal_notification.confirm_hide - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end def restore @proposal_notification.restore @proposal_notification.ignore_flag Activity.log(current_user, :restore, @proposal_notification) - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end private diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 3c0f27c98..c560ee5ed 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -120,4 +120,11 @@ class ApplicationController < ActionController::Base def current_budget Budget.current end + + def redirect_with_query_params_to(options, response_status = {}) + path_options = { controller: params[:controller] }.merge(options).merge(only_path: true) + path = url_for(request.query_parameters.merge(path_options)) + + redirect_to path, response_status + end end diff --git a/app/controllers/concerns/moderate_actions.rb b/app/controllers/concerns/moderate_actions.rb index d6c35e777..a96c2d6a6 100644 --- a/app/controllers/concerns/moderate_actions.rb +++ b/app/controllers/concerns/moderate_actions.rb @@ -28,7 +28,7 @@ module ModerateActions User.where(id: author_ids).accessible_by(current_ability, :block).each { |user| block_user user } end - redirect_to request.query_parameters.merge(action: :index) + redirect_with_query_params_to(action: :index) end private diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index ee2103ee2..4d4eb0e1d 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -37,12 +37,12 @@ class DebatesController < ApplicationController def unmark_featured @debate.update!(featured_at: nil) - redirect_to request.query_parameters.merge(action: :index) + redirect_to debates_path end def mark_featured @debate.update!(featured_at: Time.current) - redirect_to request.query_parameters.merge(action: :index) + redirect_to debates_path end def disable_recommendations diff --git a/app/controllers/images_controller.rb b/app/controllers/images_controller.rb index 665c7ce64..2e1093f0b 100644 --- a/app/controllers/images_controller.rb +++ b/app/controllers/images_controller.rb @@ -11,7 +11,7 @@ class ImagesController < ApplicationController else flash[:alert] = t "images.actions.destroy.alert" end - redirect_to params[:from] + redirect_to request.referer end format.js do if @image.destroy diff --git a/app/controllers/moderation/users_controller.rb b/app/controllers/moderation/users_controller.rb index d0ee29f83..f07268348 100644 --- a/app/controllers/moderation/users_controller.rb +++ b/app/controllers/moderation/users_controller.rb @@ -9,7 +9,7 @@ class Moderation::UsersController < Moderation::BaseController def hide_in_moderation_screen block_user - redirect_to request.query_parameters.merge(action: :index), notice: I18n.t("moderation.users.notice_hide") + redirect_with_query_params_to({ action: :index }, { notice: I18n.t("moderation.users.notice_hide") }) end def hide diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 255534a88..44b5410cc 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -3,7 +3,7 @@ module ApplicationHelper # notice: if query_params have a param which also exist in current path, # it "overrides" (query_params is merged last) def current_path_with_query_params(query_parameters) - url_for(request.query_parameters.merge(query_parameters)) + url_for(request.query_parameters.merge(query_parameters).merge(only_path: true)) end def markdown(text) diff --git a/app/views/budgets/investments/_investment_show.html.erb b/app/views/budgets/investments/_investment_show.html.erb index 98d18e655..e112342b7 100644 --- a/app/views/budgets/investments/_investment_show.html.erb +++ b/app/views/budgets/investments/_investment_show.html.erb @@ -26,7 +26,7 @@