module Turbolinks::Redirection

Provides a means of using Turbolinks to perform renders and redirects. The server will respond with a JavaScript call to Turbolinks.visit/replace().

Constants

MUTATION_MODES

Public Instance Methods

redirect_to(url = {}, response_status = {}) click to toggle source
Calls superclass method
# File lib/turbolinks/redirection.rb, line 7
def redirect_to(url = {}, response_status = {})
  turbolinks, options = _extract_turbolinks_options!(response_status)
  turbolinks = (request.xhr? && (options.size > 0 || !request.get?)) if turbolinks.nil?

  if turbolinks
    response.content_type = Mime[:js]
  end

  return_value = super(url, response_status)

  if turbolinks
    self.status = 200
    self.response_body = "Turbolinks.visit('#{location}'#{_turbolinks_js_options(options)});"
  end

  return_value
end
render(*args, &block) click to toggle source
Calls superclass method
# File lib/turbolinks/redirection.rb, line 25
def render(*args, &block)
  render_options = args.extract_options!
  turbolinks, options = _extract_turbolinks_options!(render_options)
  turbolinks = (request.xhr? && options.size > 0) if turbolinks.nil?

  if turbolinks
    response.content_type = Mime[:js]

    render_options = _normalize_render(*args, render_options, &block)
    body = render_to_body(render_options)

    self.status = 200
    self.response_body = "Turbolinks.replace('#{view_context.j(body)}'#{_turbolinks_js_options(options)});"
  else
    super(*args, render_options, &block)
  end

  self.response_body
end

Private Instance Methods