41 lines
		
	
	
		
			913 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			913 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| class Admin::SettingsController < Admin::BaseController
 | |
|   before_action :set_current_section
 | |
| 
 | |
|   def index
 | |
|   end
 | |
| 
 | |
|   def update_settings
 | |
|     @errors = ActiveModel::Errors.new(Setting.new)
 | |
|     changed_keys = []
 | |
| 
 | |
|     setting_params.keys.each do |key|
 | |
|       next if setting_params[key].nil? ||
 | |
|               (Setting.send(key).to_s == setting_params[key].strip)
 | |
|       changed_keys.push(key)
 | |
|       setting = Setting.new(var: key)
 | |
|       setting.value = setting_params[key].strip
 | |
|       unless setting.valid?
 | |
|         @errors.merge!(setting.errors)
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     if @errors.any?
 | |
|       render :show and return
 | |
|     end
 | |
| 
 | |
|     changed_keys.each do |key|
 | |
|       Setting.send("#{key}=", setting_params[key].strip)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|     def set_current_section
 | |
|       @current_section = :settings
 | |
|     end
 | |
| 
 | |
|     def setting_params
 | |
|       params.require(:setting).permit(Setting.editable_keys.map(&:to_sym))
 | |
|     end
 | |
| end
 |