diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index 27e12a2a1..fa538ad62 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -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 diff --git a/app/views/admin/settings/_setting_row.haml b/app/views/admin/settings/_setting_row.haml index bc3e47d6b..72e670dcc 100644 --- a/app/views/admin/settings/_setting_row.haml +++ b/app/views/admin/settings/_setting_row.haml @@ -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') diff --git a/app/views/admin/settings/index.haml b/app/views/admin/settings/index.haml index 30a53da33..c9a272a29 100644 --- a/app/views/admin/settings/index.haml +++ b/app/views/admin/settings/index.haml @@ -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'