These actions are never called with query parameters in our application, so there's no need to use these parameters in a redirect. Note in the test I'm using the `get` method because the `patch` method wouldn't send query parameters. This doesn't mean the action can be accessed through GET requests, since controller tests don't check route verbs.
77 lines
2.1 KiB
Ruby
77 lines
2.1 KiB
Ruby
class DebatesController < ApplicationController
|
|
include FeatureFlags
|
|
include CommentableActions
|
|
include FlagActions
|
|
include Translatable
|
|
|
|
before_action :parse_tag_filter, only: :index
|
|
before_action :authenticate_user!, except: [:index, :show, :map]
|
|
before_action :set_view, only: :index
|
|
before_action :debates_recommendations, only: :index, if: :current_user
|
|
|
|
feature_flag :debates
|
|
|
|
invisible_captcha only: [:create, :update], honeypot: :subtitle
|
|
|
|
has_orders ->(c) { Debate.debates_orders(c.current_user) }, only: :index
|
|
has_orders %w[most_voted newest oldest], only: :show
|
|
|
|
load_and_authorize_resource
|
|
helper_method :resource_model, :resource_name
|
|
respond_to :html, :js
|
|
|
|
def index_customization
|
|
@featured_debates = @debates.featured
|
|
end
|
|
|
|
def show
|
|
super
|
|
@related_contents = Kaminari.paginate_array(@debate.relationed_contents).page(params[:page]).per(5)
|
|
redirect_to debate_path(@debate), status: :moved_permanently if request.path != debate_path(@debate)
|
|
end
|
|
|
|
def vote
|
|
@debate.register_vote(current_user, params[:value])
|
|
set_debate_votes(@debate)
|
|
end
|
|
|
|
def unmark_featured
|
|
@debate.update!(featured_at: nil)
|
|
redirect_to debates_path
|
|
end
|
|
|
|
def mark_featured
|
|
@debate.update!(featured_at: Time.current)
|
|
redirect_to debates_path
|
|
end
|
|
|
|
def disable_recommendations
|
|
if current_user.update(recommended_debates: false)
|
|
redirect_to debates_path, notice: t("debates.index.recommendations.actions.success")
|
|
else
|
|
redirect_to debates_path, error: t("debates.index.recommendations.actions.error")
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def debate_params
|
|
attributes = [:tag_list, :terms_of_service]
|
|
params.require(:debate).permit(attributes, translation_params(Debate))
|
|
end
|
|
|
|
def resource_model
|
|
Debate
|
|
end
|
|
|
|
def set_view
|
|
@view = (params[:view] == "minimal") ? "minimal" : "default"
|
|
end
|
|
|
|
def debates_recommendations
|
|
if Setting["feature.user.recommendations_on_debates"] && current_user.recommended_debates
|
|
@recommended_debates = Debate.recommendations(current_user).sort_by_random.limit(3)
|
|
end
|
|
end
|
|
end
|