Until now, in order to edit an answer, we had to click on its title on the table and then on the "Edit answer" link. That was tedious and different from what we usually do in the admin section. Furthermore, the code for the answers table was written twice and when we modified it we forgot to update the one in the `show` action, meaning the table here provided less information than the information present in the answers tables. Co-Authored-By: Javi Martín <javim@elretirao.net>
55 lines
1.2 KiB
Ruby
55 lines
1.2 KiB
Ruby
class Admin::Poll::Questions::AnswersController < Admin::Poll::BaseController
|
|
include Translatable
|
|
|
|
load_and_authorize_resource :question, class: "::Poll::Question"
|
|
load_and_authorize_resource class: "::Poll::Question::Answer",
|
|
through: :question,
|
|
through_association: :question_answers
|
|
|
|
def new
|
|
end
|
|
|
|
def create
|
|
if @answer.save
|
|
redirect_to admin_question_path(@question),
|
|
notice: t("flash.actions.create.poll_question_answer")
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def edit
|
|
end
|
|
|
|
def update
|
|
if @answer.update(answer_params)
|
|
redirect_to admin_question_path(@question),
|
|
notice: t("flash.actions.save_changes.notice")
|
|
else
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def order_answers
|
|
::Poll::Question::Answer.order_answers(params[:ordered_list])
|
|
head :ok
|
|
end
|
|
|
|
private
|
|
|
|
def answer_params
|
|
params.require(:poll_question_answer).permit(allowed_params)
|
|
end
|
|
|
|
def allowed_params
|
|
attributes = [:title, :description, :given_order]
|
|
|
|
[*attributes, translation_params(Poll::Question::Answer)]
|
|
end
|
|
|
|
def resource
|
|
load_answer unless @answer
|
|
@answer
|
|
end
|
|
end
|