turbolinks (5.0.0)
Rails 4.2.2
Is there DRY to make every link_to in your app data: {turbolinks: false}
?
or does that defeat the purpose of Turbolinks and suggest that it should just be removed?
A large number of my jquery scripts will not work correctly if a link is clicked unless it contains data: {turbolinks: false }
, the scripts will work correctly when the page is reloaded.
I have my jquery wrapped in: $(document).on('turbolinks:load', function () { #something here});
So, the question you asked was "how to DRY up my endless link annotations?" I'll answer that, first...
Yes, if you
turbolinks: false
everything, then yes, you should just remove Turbolinks. Not because it's DRY, but because then you're disabling Turbolinks everywhere and might as well remove it. It doesn't do anything but deal with link-clicking.If I can be so bold, though, I think your real question is:
Without getting into specific plugins, many of them latch onto jQuery's
$
function, which attaches toDOMContentLoaded
. Turbolinks fires a different event instead (in Turbolinks-Classic this was thepage:load
event... in Turbolinks 5 it's theturbolinks:load
event, that event isn't emitted and those event handlers don't get reset.One possible answer for how to structure your JavaScript initializers is here.
I personally have stuck with Turbolinks, and as one last pitch, I'll point you towards Nate Berkopec's article 100ms to Glass with Rails and Turbolinks. He makes a reasonable case for why Turbolinks is a Good Thing.