Props to @jacobdaddario for requestSubmit
.
I’ve successfully replaced the following rails-ujs code with Turbo.
Before:
<%= check_box_tag dom_id(todo, "checkbox"), 1, todo.completed?, data: { remote: true, url: toggle_todo_path(todo), method: :post } %>
After:
<%= form_with model: todo, url: toggle_todo_path(todo), method: :post do |form| %>
<%= form.check_box :completed, data: { controller: "checkbox", action: "checkbox#submit" } %>
<% end %>
// app/javascript/controllers/checkbox_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
submit() {
this.element.closest("form").requestSubmit();
}
}
You can see the whole commit here: https://github.com/mrhead/todos/pull/49/commits/0dc609973e7d7310e59506c05bb4101a0be8b025