diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 09705d1..c8be53e 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,2 +1,3 @@ class ApplicationController < ActionController::Base + include Turbo::Redirection end diff --git a/app/controllers/concerns/turbo/redirection.rb b/app/controllers/concerns/turbo/redirection.rb new file mode 100644 index 0000000..cf7cc55 --- /dev/null +++ b/app/controllers/concerns/turbo/redirection.rb @@ -0,0 +1,32 @@ +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 + diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 97b4aed..efe387a 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -6,8 +6,8 @@ <%= csp_meta_tag %> - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> - <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbo-track': 'reload' %> + <%= javascript_pack_tag 'application', 'data-turbo-track': 'reload' %> diff --git a/app/views/machines/_form.html.erb b/app/views/machines/_form.html.erb index ae1a515..1f693aa 100644 --- a/app/views/machines/_form.html.erb +++ b/app/views/machines/_form.html.erb @@ -1,4 +1,4 @@ -<%= form_with model: @machine, local: true do |form| %> +<%= form_with model: @machine do |form| %>
<%= form.label :name %>
diff --git a/app/views/players/_form.html.erb b/app/views/players/_form.html.erb index ca98df8..170b6d3 100644 --- a/app/views/players/_form.html.erb +++ b/app/views/players/_form.html.erb @@ -1,4 +1,4 @@ -<%= form_with model: @player, local: true do |form| %> +<%= form_with model: @player do |form| %>
<%= form.label :name %>