Module: ActiveadminSettingsCached::DSL

Defined in:
lib/activeadmin_settings_cached/dsl.rb

Instance Method Summary collapse

Instance Method Details

#active_admin_settings_page(options = {}, &block) ⇒ Object

Declares settings function.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :model_name, (String)

    settings model name override (default: uses name from global config.)

  • :starting_with, (String)

    each key must starting with, (default: nil)

  • :key, (String)

    root key can be replacement for starting_with, (default: nil)

  • :tempalte (String)

    custom, template rendering (default: ‘admin/settings/index’)

  • :template_object, (String)

    object to use in templates (default: ActiveadminSettingsCached::Model instance)

  • :display, (String)

    display settings override (default: nil)

  • :title, (String)

    title value override (default: I18n.t(‘settings.menu.label’))



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/activeadmin_settings_cached/dsl.rb', line 15

def active_admin_settings_page(options = {}, &block)
  options.assert_valid_keys(*ActiveadminSettingsCached::Options::VALID_OPTIONS)

  options = ActiveadminSettingsCached::Options.options_for(options)
  coercion =
      ActiveadminSettingsCached::Coercions.new(options[:template_object].defaults, options[:template_object].display)

  content title: options[:title] do
    render partial: options[:template], locals: { settings_model: options[:template_object] }
  end

  page_action :update, method: :post do
    settings_params = params.require(:settings).permit!

    coercion.cast_params(settings_params) do |name, value|
      options[:template_object].save(name, value)
    end

    flash[:success] = t('activeadmin_settings_cached.settings.update.success'.freeze)
    Rails.version.to_i >= 5 ? redirect_back(fallback_location: admin_root_path) : redirect_to(:back)
  end

  instance_eval(&block) if block_given?
end