app/controllers/admin/legislation/questions_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Admin::Legislation::QuestionsController < Admin::Legislation::BaseController
  include Translatable

  load_and_authorize_resource :process, class: "Legislation::Process"
  load_and_authorize_resource :question, class: "Legislation::Question", through: :process

  def index
    @questions = @process.questions
  end

  def new
  end

  def create
    @question.author = current_user
    if @question.save
      notice = t('admin.legislation.questions.create.notice', link: question_path)
      redirect_to admin_legislation_process_questions_path, notice: notice
    else
      flash.now[:error] = t('admin.legislation.questions.create.error')
      render :new
    end
  end

  def update
    if @question.update(question_params)
      notice = t('admin.legislation.questions.update.notice', link: question_path)
      redirect_to edit_admin_legislation_process_question_path(@process, @question), notice: notice
    else
      flash.now[:error] = t('admin.legislation.questions.update.error')
      render :edit
    end
  end

  def destroy
    @question.destroy
    notice = t('admin.legislation.questions.destroy.notice')
    redirect_to admin_legislation_process_questions_path, notice: notice
  end

  private

    def question_path
      legislation_process_question_path(@process, @question).html_safe
    end

    def question_params
      params.require(:legislation_question).permit(
        translation_params(::Legislation::Question),
        question_options_attributes: [:id, :_destroy,
                                      translation_params(::Legislation::QuestionOption)]
      )
    end

    def resource
      @question || ::Legislation::Question.find(params[:id])
    end
end