module ReactWebpackRails::ReduxIntegration::ViewHelpers

Public Instance Methods

redux_container(name, options = {}) click to toggle source
# File lib/react_webpack_rails/redux_integration/view_helpers.rb, line 17
def redux_container(name, options = {})
  container = Services::ReduxContainer.new('redux-container', name, options)

  rwr_element('redux-container', container.payload, container.options) do
    container.result['body'].html_safe
  end
end
redux_router(name, options = {}) click to toggle source
# File lib/react_webpack_rails/redux_integration/view_helpers.rb, line 25
def redux_router(name, options = {})
  router = Services::ReduxRouter.new('redux-router', name, options, request.path)
  result = handle_response_code(router.result, name, request.path)

  rwr_element('redux-router', router.payload, router.options) do
    result
  end
end
redux_store(name, raw_props = {}, options = {}) click to toggle source
# File lib/react_webpack_rails/redux_integration/view_helpers.rb, line 7
def redux_store(name, raw_props = {}, options = {})
  props = serialize_props(raw_props)

  if server_side(options.delete(:server_side))
    NodeIntegrationRunner.new('redux-store', name: name, props: props).run
  end

  rwr_element('redux-store', { name: name, props: props }, options)
end

Private Instance Methods

handle_response_code(result, name, path) click to toggle source
# File lib/react_webpack_rails/redux_integration/view_helpers.rb, line 42
def handle_response_code(result, name, path)
  case result['code']
  when 200
    result['body'].html_safe
  when 302
    controller.redirect_to(result['redirectUri'])
  else
    raise ActionController::RoutingError.new(routing_error(name, path))
  end
end
routing_error(name, path) click to toggle source
# File lib/react_webpack_rails/redux_integration/view_helpers.rb, line 53
def routing_error(name, path)
  "ReactWebpackRails::ReduxIntegration: No route found in #{name} router for #{path}."
end
serialize_props(raw_props) click to toggle source
# File lib/react_webpack_rails/redux_integration/view_helpers.rb, line 36
def serialize_props(raw_props)
  props = raw_props.as_json
  return props unless Rails.application.config.react.camelize_props
  ReactWebpackRails::Services::CamelizeKeys.call(props)
end