Sha256: 134ba63e5e4376842f63070fce58e0434615c3dc6887d6e0ea3715f3ed1765cd

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

class RailsSettingsUi::SettingsController < RailsSettingsUi::ApplicationController
  include RailsSettingsUi::SettingsHelper
  before_filter :collection
  before_filter :validate_settings, only: :update_all

  def index
  end

  def update_all
    if @errors.any?
      render :index
    else
      coerced_values.each { |name, value| RailsSettingsUi.settings_klass[name] = value }
      redirect_to [:settings]
    end
  end

  private

  def collection
    all_settings = default_settings.merge(RailsSettingsUi.settings_klass.public_send(get_collection_method))
    all_settings_without_ignored = all_settings.reject{ |name, description| RailsSettingsUi.ignored_settings.include?(name.to_sym) }
    @settings = Hash[all_settings_without_ignored]
    @errors = {}
  end

  def validate_settings
    @errors = RailsSettingsUi::SettingsFormValidator.new(default_settings, params['settings'].deep_dup).errors
  end

  def coerced_values
    RailsSettingsUi::SettingsFormCoercible.new(default_settings, params['settings'].deep_dup).coerce!
  end

  def default_settings
    RailsSettingsUi.settings_klass.defaults
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails-settings-ui-1.0.0 app/controllers/rails_settings_ui/settings_controller.rb