class React::TopLevelRailsComponent
Attributes
event_history[RW]
Public Class Methods
callback_history_for(proc_name)
click to toggle source
# File lib/react/top_level_rails_component.rb, line 6 def callback_history_for(proc_name) event_history[proc_name] end
clear_callback_history_for(proc_name)
click to toggle source
# File lib/react/top_level_rails_component.rb, line 14 def clear_callback_history_for(proc_name) event_history[proc_name] = [] end
clear_event_history_for(event_name)
click to toggle source
# File lib/react/top_level_rails_component.rb, line 26 def clear_event_history_for(event_name) event_history["_on#{event_name.event_camelize}"] = [] end
event_history_for(event_name)
click to toggle source
# File lib/react/top_level_rails_component.rb, line 18 def event_history_for(event_name) event_history["_on#{event_name.event_camelize}"] end
last_callback_for(proc_name)
click to toggle source
# File lib/react/top_level_rails_component.rb, line 10 def last_callback_for(proc_name) event_history[proc_name].last end
last_event_for(event_name)
click to toggle source
# File lib/react/top_level_rails_component.rb, line 22 def last_event_for(event_name) event_history["_on#{event_name.event_camelize}"].last end
Public Instance Methods
component()
click to toggle source
# File lib/react/top_level_rails_component.rb, line 31 def component return @component if @component paths_searched = [] component = nil if params.component_name.start_with?('::') # if absolute path of component is given, look it up and fail if not found paths_searched << params.component_name component = begin Object.const_get(params.component_name) rescue NameError nil end else # if relative path is given, look it up like this # 1) we check each path + controller-name + component-name # 2) if we can't find it there we check each path + component-name # if we can't find it we just try const_get # so (assuming controller name is Home) # ::Foo::Bar will only resolve to some component named ::Foo::Bar # but Foo::Bar will check (in this order) ::Home::Foo::Bar, ::Components::Home::Foo::Bar, ::Foo::Bar, ::Components::Foo::Bar 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 @component = component return @component 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
render()
click to toggle source
# File lib/react/top_level_rails_component.rb, line 90 def render React::RenderingContext.render(component, @render_params) end