I bet because of a turbo link or ajax based page rendering (backbone, remote=true , ...)
I always turned off turbolink and control which links are remote=true , and for all ajax answers I insert this javascript line at the end
history.pushState(null, '', '/the/requested/url' );
If you do not want to manually implement this line for each of your responses to links, you can wrap it in the ajax:complete event ( more information ), and I assume that the turbine has an event that you can also use.
The second part of the trick is to popstate , so when your users click the back button, the page will be refreshed from the server (via the URL that was previously pushState-ed) and ajax / js / json / any answer is no longer will be displayed.
setTimeout( function () { $(window).bind('popstate', function () { window.location = location.href; }); }, 500);
As you can see, I am wrapping the binding of the popstate event in setTimeout , because if you do not, you might have problems with some browsers that will endlessly refresh the page.
Benj
source share