class ReactiveRuby::Rails::ComponentMount
Attributes
controller[RW]
Public Instance Methods
react_component(name, props = {}, options = {}, &block)
click to toggle source
Calls superclass method
# File lib/reactive-ruby/rails/component_mount.rb, line 10 def react_component(name, props = {}, options = {}, &block) options = context_initializer_options(options, name) if options[:prerender] props = serialized_props(props, name, controller) super(top_level_name, props, options, &block).gsub("\n","") .gsub(/(<script>.*<\/script>)<\/div>$/,'</div>\1').html_safe + footers end
setup(controller)
click to toggle source
# File lib/reactive-ruby/rails/component_mount.rb, line 6 def setup(controller) self.controller = controller end
Private Instance Methods
context_initializer_options(options, name)
click to toggle source
# File lib/reactive-ruby/rails/component_mount.rb, line 20 def context_initializer_options(options, name) options[:prerender] = {options[:prerender] => true} unless options[:prerender].is_a? Hash existing_context_initializer = options[:prerender][:context_initializer] options[:prerender][:context_initializer] = lambda do |ctx| React::IsomorphicHelpers.load_context(ctx, controller, name) existing_context_initializer.call ctx if existing_context_initializer end options end
serialized_props(props, name, controller)
click to toggle source
# File lib/reactive-ruby/rails/component_mount.rb, line 32 def serialized_props(props, name, controller) { render_params: props, component_name: name, controller: controller.class.name.gsub(/Controller$/,"") }.react_serializer end
top_level_name()
click to toggle source
# File lib/reactive-ruby/rails/component_mount.rb, line 37 def top_level_name 'React.TopLevelRailsComponent' end