class Rbexy::Component
Attributes
content_block[R]
view_context[R]
Public Class Methods
component_name()
click to toggle source
# File lib/rbexy/component.rb, line 14 def self.component_name name.underscore end
new(view_context, **props)
click to toggle source
Calls superclass method
# File lib/rbexy/component.rb, line 22 def initialize(view_context, **props) super( view_context.lookup_context, view_context.assigns, view_context.controller ) @view_context = view_context setup(**props) end
Public Instance Methods
call()
click to toggle source
# File lib/rbexy/component.rb, line 44 def call path = TemplatePath.new(component_name) template = view_context.lookup_context.find(path) template.render(self, {}) rescue ActionView::Template::Error => error error.set_backtrace clean_template_backtrace(error.backtrace) raise error end
compiled_method_container()
click to toggle source
# File lib/rbexy/component.rb, line 57 def compiled_method_container Rbexy::Component end
component_name()
click to toggle source
# File lib/rbexy/component.rb, line 18 def component_name self.class.component_name end
content()
click to toggle source
# File lib/rbexy/component.rb, line 53 def content content_block ? content_block.call : "" end
render(&block)
click to toggle source
# File lib/rbexy/component.rb, line 39 def render(&block) @content_block = block_given? ? block : nil call end
setup(**props)
click to toggle source
Override in your subclass to handle props, setup your component, etc. You can also implement `initialize` but you just need to remember to call super(view_context
).
# File lib/rbexy/component.rb, line 37 def setup(**props); end
Private Instance Methods
clean_template_backtrace(backtrace)
click to toggle source
# File lib/rbexy/component.rb, line 73 def clean_template_backtrace(backtrace) return backtrace if Rbexy.configuration.debug BacktraceCleaner.new(backtrace).call end
method_missing(meth, *args, &block)
click to toggle source
Calls superclass method
# File lib/rbexy/component.rb, line 65 def method_missing(meth, *args, &block) if view_context.respond_to?(meth) view_context.send(meth, *args, &block) else super end end