Application visits are initiated by clicking a Turbolinks-enabled link, or programmatically by calling
Turbolinks.visit(location)
By default, the visit function uses the 'advance' action. More understandably, the default behavior for the visit function is to advance to the page indicated by the "location" parameter. Whenever a page is visited, turbolinks pushes a new entry onto the browser's history using history.pushState
. The history is important because turbolinks will try to use the history to load pages from cache whenever possible. This allows for extremely fast page rendering for frequently visited pages.
However, if you want to visit a location without pushing any history onto the stack, you can use the 'replace' action on the visit function like so:
// using links
<a href="/edit" data-turbolinks-action="replace">Edit</a>
// programatically
Turbolinks.visit("/edit", { action: "replace" })
This will replace the top of the history stack with the new page so that the total number of items on the stack remains unchanged.
There is also a "restore" action that aids in restoration vists, the visits that occur as a result of the user clicking the forward button or back button on their browser. Turbolinks handles these types of events internally and recommends that users don't manually tamper with the default behavior.