Module: Beamer::ControllerExtension

Extended by:
ActiveSupport::Concern
Defined in:
lib/beamer/controller_extension.rb

Instance Method Summary collapse

Instance Method Details

#present(object, *args) {|presenter| ... } ⇒ Object

Yields:

  • (presenter)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/beamer/controller_extension.rb', line 9

def present(object, *args)
  options = {
    loader: :load_with_demodulized_fallback
  }.merge(args.extract_options!)


  presenter = options[:class].new(object, view_context) if options[:class]

  presenter ||= begin
                  loader_module = "Beamer::Loader"
                  loader_class = options[:loader].to_s.camelize
                  loader = "#{loader_module}::#{loader_class}".constantize.new(object, view_context)
                  loader.load_presenter
                end

  yield presenter if block_given?

  presenter
end