Sha256: 1d57151a4a85e8d0d451a19f9eac0a12fb18185fff540f88b1da363f5ca54747

Contents?: true

Size: 1.33 KB

Versions: 13

Compression:

Stored size: 1.33 KB

Contents

module React
  module Rails
    # A renderer class suitable for `ActionController::Renderers`.
    # It is associated to `:component` in the Railtie.
    #
    # It is prerendered by default with {React::ServerRendering}.
    # Set options[:prerender] to `false` to disable prerendering.
    #
    # @example Rendering a component from a controller
    #   class TodosController < ApplicationController
    #     def index
    #       @todos = Todo.all
    #       render component: 'TodoList', props: { todos: @todos }, tag: 'span', class: 'todo'
    #     end
    #   end
    class ControllerRenderer
      include React::Rails::ViewHelper
      include ActionView::Helpers::TagHelper
      include ActionView::Helpers::TextHelper

      attr_accessor :output_buffer

      def initialize(options={})
        controller = options[:controller]
        @__react_component_helper = controller.__react_component_helper
      end

      # @return [String] HTML for `component_name` with `options[:props]`
      def call(component_name, options, &block)
        props = options.fetch(:props, {})
        options = default_options.merge(options.slice(:data, :aria, :tag, :class, :id, :prerender))
        react_component(component_name, props, options, &block)
      end

      private

      def default_options
        { prerender: true }
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
react-rails-2.4.4.pre lib/react/rails/controller_renderer.rb
react-rails-2.4.3 lib/react/rails/controller_renderer.rb
react-rails-2.4.2 lib/react/rails/controller_renderer.rb
react-rails-2.4.1 lib/react/rails/controller_renderer.rb
react-rails-2.4.0 lib/react/rails/controller_renderer.rb
react-rails-2.3.1 lib/react/rails/controller_renderer.rb
react-rails-2.3.0 lib/react/rails/controller_renderer.rb
react-rails-2.2.1 lib/react/rails/controller_renderer.rb
react-rails-2.2.0 lib/react/rails/controller_renderer.rb
react-rails-2.1.0 lib/react/rails/controller_renderer.rb
react-rails-2.0.2 lib/react/rails/controller_renderer.rb
react-rails-2.0.0 lib/react/rails/controller_renderer.rb
react-rails-1.11.0 lib/react/rails/controller_renderer.rb