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