mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 17:59:47 +02:00
48 lines
1.1 KiB
Ruby
48 lines
1.1 KiB
Ruby
class Admin::SettingsController < AdminController
|
|
before_action :set_setting_group, only: [:show, :update]
|
|
|
|
def index
|
|
@settings = Setting.unscoped
|
|
end
|
|
|
|
def create
|
|
casted_settings.each do |k, v|
|
|
Setting[k] = v
|
|
end
|
|
|
|
flash[:notice] = I18n.t('shared.records_updated')
|
|
redirect_to [:admin, :settings]
|
|
end
|
|
|
|
def show; end
|
|
|
|
def update
|
|
if @setting_group.update(setting_group_params)
|
|
flash[:notice] = I18n.t('shared.setting_updated')
|
|
redirect_to [:admin, @setting_group]
|
|
else
|
|
flash[:alert] = I18n.t('shared.failed_to_update_setting')
|
|
render 'show'
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def set_setting_group
|
|
@setting_group = SettingGroup.find(params[:id])
|
|
end
|
|
|
|
def setting_group_params
|
|
params.require(:setting_group).permit(settings_attributes: [:value, :id])
|
|
end
|
|
|
|
def casted_settings
|
|
settings = {}
|
|
params[:settings].each do |k, v|
|
|
settings[k] = v.to_i if Setting[k].class == Fixnum
|
|
settings[k] = v.to_f if Setting[k].class == Float
|
|
settings[k] = (v == 'true' ? true : false) if [TrueClass, FalseClass].include?(Setting[k].class)
|
|
end
|
|
settings
|
|
end
|
|
end
|