Make new setting model configurable from admin/settings

This commit is contained in:
Karl Erik Õunapuu 2020-08-11 14:57:44 +03:00
parent b3941a373c
commit d8625dd3eb
3 changed files with 10 additions and 17 deletions

View file

@ -12,17 +12,13 @@ module Admin
end
def create
@errors = Setting.params_errors(casted_settings)
if @errors.empty?
casted_settings.each do |k, v|
Setting[k] = v
end
update = SettingEntry.update(casted_settings.keys, casted_settings.values)
if update
flash[:notice] = t('.saved')
redirect_to [:admin, :settings]
redirect_to %i[admin settings]
else
flash[:alert] = @errors.values.uniq.join(", ")
render "admin/settings/index"
flash[:alert] = update.errors.values.uniq.join(', ')
render 'admin/settings/index'
end
end
@ -32,10 +28,7 @@ module Admin
settings = {}
params[:settings].each do |k, v|
settings[k] = v
settings[k] = v.to_i if Setting.integer_settings.include?(k.to_sym)
settings[k] = v.to_f if Setting.float_settings.include?(k.to_sym)
settings[k] = (v == 'true' ? true : false) if Setting.boolean_settings.include?(k.to_sym)
settings[k] = { value: v }
end
settings

View file

@ -2,7 +2,7 @@
%td.col-md-6= setting.code.humanize
- if [TrueClass, FalseClass].include?(setting.value.class)
%td.col-md-6
= hidden_field_tag("[settings][#{setting.code}]", '', id: nil)
= check_box_tag("[settings][#{setting.code}]", true, value)
= hidden_field_tag("[settings][#{setting.id}]", '', id: nil)
= check_box_tag("[settings][#{setting.id}]", true, value)
- else
%td.col-md-6= text_field_tag("[settings][#{setting.code}]", setting.value, class: 'form-control')
%td.col-md-6= text_field_tag("[settings][#{setting.id}]", setting.value, class: 'form-control')

View file

@ -32,7 +32,7 @@
%tr
%td.col-md-6= label_tag :default_language
%td.col-md-6
= select_tag '[settings][default_language]',
= select_tag "[settings][#{SettingEntry.find_by(code: 'default_language').id || 1}]",
options_for_select(available_languages, Setting.default_language),
class: 'form-control'