module ActionPresenter
Constants
- VERSION
Public Class Methods
presenter_options()
click to toggle source
# File lib/action_presenter/railtie/action_controller.rb, line 9 def presenter_options presenter_name = controller_name.gsub(/\W/, "_").underscore @presenter_options ||= ActiveSupport::OrderedOptions.new.merge( presenter_name: presenter_name, presents: presenter_name.singularize, ) end
Public Instance Methods
controller_presenter()
click to toggle source
controller presenter
# File lib/action_presenter/railtie/action_view.rb, line 21 def controller_presenter return @controller_presenter if @controller_presenter presenter_name = controller.presenter_options.presenter_name @controller_presenter = presenter(presenter_name).tap do |new_presenter| # attempt to auto set record presents = new_presenter.presenter_options.presents new_presenter.record ||= instance_variable_get("@#{new_presenter.presenter_options.presents}") end end
local_presenter()
click to toggle source
local presenter
# File lib/action_presenter/railtie/action_view.rb, line 34 def local_presenter @local_presenter || raise(ArgumentError, "local presenter [lp] must be provided") end
local_presenter=(new_local_presenter)
click to toggle source
# File lib/action_presenter/railtie/action_view.rb, line 38 def local_presenter=(new_local_presenter) @local_presenter = new_local_presenter.tap do |new_presenter| # attempt to auto set record new_presenter.record ||= instance_variable_get("@#{new_presenter.presenter_options.presents}") end end
presenter(presenter_name, *params, &block)
click to toggle source
dynamic presenter initializer
# File lib/action_presenter/railtie/action_view.rb, line 5 def presenter(presenter_name, *params, &block) instance_variable = "@#{presenter_name}_presenter" presenter_instance = instance_variable_get(instance_variable) # return presenter_instance if already initialized return presenter_instance if presenter_instance # initialize presenter instance presenter_class_name = "#{presenter_name.camelize}Presenter" presenter_class = ::ActionPresenter::Base::PRESENTER_CLASSES.find do |presenter_class| presenter_class.name == presenter_class_name end raise ArgumentError, "#{presenter_class_name} is not defined" if !presenter_class presenter = presenter_class.new.set(view: self) instance_variable_set(instance_variable, presenter) end
presenter_options()
click to toggle source
# File lib/action_presenter/railtie/action_controller.rb, line 4 def presenter_options @presenter_options ||= self.class.presenter_options.dup end