21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/rails-helpers/top_level_rails_component.rb', line 21
def top_level_render
paths_searched = []
component = nil
if params.component_name.start_with?('::')
paths_searched << params.component_name
component = begin
Object.const_get(params.component_name)
rescue NameError
nil
end
else
self.class.search_path.each do |scope|
paths_searched << "#{scope.name}::#{params.controller}::#{params.component_name}"
component = begin
scope.const_get(params.controller, false).const_get(params.component_name, false)
rescue NameError
nil
end
break if component != nil
end
unless component
self.class.search_path.each do |scope|
paths_searched << "#{scope.name}::#{params.component_name}"
component = begin
scope.const_get(params.component_name, false)
rescue NameError
nil
end
break if component != nil
end
end
end
return React::RenderingContext.render(component, params.render_params) if component && component.method_defined?(:render)
raise "Could not find component class '#{params.component_name}' for params.controller '#{params.controller}' in any component directory. Tried [#{paths_searched.join(", ")}]"
end
|