module ReactWebpackRails::ReactRouterIntegration::ViewHelpers

Public Instance Methods

react_router(name, props = {}, options = {}) click to toggle source
# File lib/react_webpack_rails/react_router_integration/view_helpers.rb, line 4
def react_router(name, props = {}, options = {})
  payload = { name: name, props: props }
  result = ''
  if server_side?(options.delete(:server_side))
    result = execute_router_server_side!(payload, request.path)
  end
  react_element('react-router', payload, options) { result }
end

Private Instance Methods

execute_router_server_side!(payload, path) click to toggle source
# File lib/react_webpack_rails/react_router_integration/view_helpers.rb, line 23
def execute_router_server_side!(payload, path)
  runner = NodeIntegrationRunner.new('react-router', payload.merge(path: path))
  result = JSON.parse(runner.run)

  case result['code']
  when 200
    result['body'].html_safe
  when 302
    controller.redirect_to result['redirectUri']
  else
    fail ActionController::RoutingError, routing_error(payload[:name], path)
  end
end
routing_error(name, path) click to toggle source
# File lib/react_webpack_rails/react_router_integration/view_helpers.rb, line 15
def routing_error(name, path)
  "RactRouter: No route found in #{name} router for #{path}."
end
server_side?(server_side) click to toggle source
# File lib/react_webpack_rails/react_router_integration/view_helpers.rb, line 19
def server_side?(server_side)
  server_side.nil? ? Rails.application.config.react.server_side : server_side
end