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
footers() click to toggle source
# File lib/reactive-ruby/rails/component_mount.rb, line 41
def footers
  React::IsomorphicHelpers.prerender_footers #if options[:prerender]
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