module Swamp::Controller
Public Class Methods
included(base)
click to toggle source
# File lib/swamp/rails_actions/controller.rb, line 5 def self.included(base) base.extend ClassMethods end
Public Instance Methods
action!(klass, **kwargs)
click to toggle source
# File lib/swamp/rails_actions/controller.rb, line 9 def action!(klass, **kwargs) result = klass.new.call(params.to_unsafe_h.merge(request: request, **kwargs)) setup_exposures!(klass, result) if result.render? render_result(result, klass) elsif result.redirect? redirect_result(result, klass) end end
Private Instance Methods
redirect_result(result, klass)
click to toggle source
# File lib/swamp/rails_actions/controller.rb, line 28 def redirect_result(result, klass) setup_flash(result, klass) redirect_to result.redirection_path, result.redirection_options end
render_result(result, klass)
click to toggle source
# File lib/swamp/rails_actions/controller.rb, line 23 def render_result(result, klass) setup_flash_now(result, klass) render result.template end
setup_exposures!(klass, result)
click to toggle source
# File lib/swamp/rails_actions/controller.rb, line 33 def setup_exposures!(klass, result) klass.exposures.each do |key, value| instance_variable_set(value, result.exposures[key]) end end
setup_flash(result, klass)
click to toggle source
# File lib/swamp/rails_actions/controller.rb, line 47 def setup_flash(result, klass) return unless klass.exposures.key?(:flash) result.flash.each do |type, message| flash[type] = message end end
setup_flash_now(result, klass)
click to toggle source
# File lib/swamp/rails_actions/controller.rb, line 39 def setup_flash_now(result, klass) return unless klass.exposures.key?(:flash) result.flash.each do |type, message| flash.now[type] = message end end