class React::TopLevelRailsComponent
Public Class Methods
search_path()
click to toggle source
# File lib/rails-helpers/top_level_rails_component.rb, line 5 def self.search_path @search_path ||= [Module] end
Public Instance Methods
render()
click to toggle source
# File lib/rails-helpers/top_level_rails_component.rb, line 17 def render paths_searched = [] if params.component_name.start_with? "::" paths_searched << params.component_name.gsub(/^\:\:/,"") component = params.component_name.gsub(/^\:\:/,"").split("::").inject(Module) { |scope, next_const| scope.const_get(next_const, false) } rescue nil return present component, params.render_params if component && component.method_defined?(:render) else self.class.search_path.each do |path| # try each path + params.controller + params.component_name paths_searched << "#{path.name + '::' unless path == Module}#{params.controller}::#{params.component_name}" component = "#{params.controller}::#{params.component_name}".split("::").inject(path) { |scope, next_const| scope.const_get(next_const, false) } rescue nil return present component, params.render_params if component && component.method_defined?(:render) end self.class.search_path.each do |path| # then try each path + params.component_name paths_searched << "#{path.name + '::' unless path == Module}#{params.component_name}" component = "#{params.component_name}".split("::").inject(path) { |scope, next_const| scope.const_get(next_const, false) } rescue nil return present component, params.render_params if component && component.method_defined?(:render) end end raise "Could not find component class '#{params.component_name}' for params.controller '#{params.controller}' in any component directory. Tried [#{paths_searched.join(", ")}]" end