blob: cf7cc55a35c6727a90d1b6510b8e79854ce503f1 (
plain) (
tree)
|
|
module Turbo
module Redirection
extend ActiveSupport::Concern
def redirect_to(url = {}, options = {})
turbo = options.delete(:turbo)
super.tap do
if turbo != false && request.xhr? && !request.get?
visit_location_with_turbo(location, turbo)
end
end
end
private
def visit_location_with_turbo(location, action)
visit_options = {
action: action.to_s == "advance" ? action : "replace"
}
script = []
script << "Turbo.clearCache()"
script << "Turbo.visit(#{location.to_json}, #{visit_options.to_json})"
self.status = 200
self.response_body = script.join("\n")
response.content_type = "text/javascript"
response.headers["X-Xhr-Redirect"] = location
end
end
end
|