internetee-registry/app/controllers/admin/settings_controller.rb
2014-10-16 11:48:51 +03:00

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