module ActiveadminSettingsCached::DSL
Public Instance Methods
Declares settings function.
@api public
@param [Hash] options @option options [String] :model_name, settings model name override (default: uses name from global config.) @option options [String] :starting_with, each key must starting with, (default: nil) @option options [String] :key, root key can be replacement for starting_with, (default: nil) @option options [String] :template custom, template rendering (default: 'admin/settings/index') @option options [String] :template_object, object to use in templates (default: ActiveadminSettingsCached::Model
instance) @option options [String] :display, display settings override (default: nil) @option options [String] :title, title value override (default: I18n.t('settings.menu.label')) @option options [Proc] :after_save, callback for action after page update, (default: nil)
# File lib/activeadmin_settings_cached/dsl.rb, line 18 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) options[:after_save].call if options[:after_save].respond_to?(:call) end instance_eval(&block) if block_given? end