When we've got 6 actions and we use it in 3, IMHO the code is easier to follow if we write the actions where we do use it.
65 lines
1.4 KiB
Ruby
65 lines
1.4 KiB
Ruby
class Admin::BudgetGroupsController < Admin::BaseController
|
|
include Translatable
|
|
include FeatureFlags
|
|
feature_flag :budgets
|
|
|
|
before_action :load_budget
|
|
before_action :load_group, only: [:edit, :update, :destroy]
|
|
|
|
def index
|
|
@groups = @budget.groups.order(:id)
|
|
end
|
|
|
|
def new
|
|
@group = @budget.groups.new
|
|
end
|
|
|
|
def edit
|
|
end
|
|
|
|
def create
|
|
@group = @budget.groups.new(budget_group_params)
|
|
if @group.save
|
|
redirect_to groups_index, notice: t("admin.budget_groups.create.notice")
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def update
|
|
if @group.update(budget_group_params)
|
|
redirect_to groups_index, notice: t("admin.budget_groups.update.notice")
|
|
else
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
if @group.headings.any?
|
|
redirect_to groups_index, alert: t("admin.budget_groups.destroy.unable_notice")
|
|
else
|
|
@group.destroy!
|
|
redirect_to groups_index, notice: t("admin.budget_groups.destroy.success_notice")
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def load_budget
|
|
@budget = Budget.find_by_slug_or_id! params[:budget_id]
|
|
end
|
|
|
|
def load_group
|
|
@group = @budget.groups.find_by_slug_or_id! params[:id]
|
|
end
|
|
|
|
def groups_index
|
|
admin_budget_groups_path(@budget)
|
|
end
|
|
|
|
def budget_group_params
|
|
valid_attributes = [:max_votable_headings]
|
|
params.require(:budget_group).permit(*valid_attributes, translation_params(Budget::Group))
|
|
end
|
|
end
|