Use render in your Rails controllers and handle the response with Turbolinks.
Turbolinks supports redirect_to out of the box. But render is not supported and you have to use workarounds for common things like dealing with forms. This gem aims to fix that.
I think Turbolinks/Rails should handle this officially. If you agree you can vote for this idea.
Add this line to your application's Gemfile:
gem 'turbolinks_render'And then execute:
$ bundleBy default, render will be handled by Turbolinks if these conditions are met:
- It's an ajax request
 - It's not a 
getrequest - It generates an html response (
text/htmlcontent type) 
When these conditions are met and render is used:
- The page content is replaced with the rendered content with Javascript. It uses Turbolinks to do this replacement, so it is pretty smart about keeping the 
<head>when it's identical, executing<script>elements, etc. - An event 
turbolinks:loadis dispatched 
You can disable turbolinks on a given request with:
render turbolinks: falseYou can invert the default behavior: never use turbolinks for rendering unless explicitly indicated. Create a file config/initializers/turbolinks_render.rb and toggle turbolinks_render.render_with_turbolinks_by_default:
Rails.application.config.turbolinks_render.render_with_turbolinks_by_default = falseIn this case, to use turbolinks you should write:
render turbolinks: true- It configures a rack middleware that intercept requests and modify responses when the expected conditions are met.
 - It uses some internal Turbolinks classes to perform the rendering. This makes the DOM-update logic very smart but it could introduce problems with future Turbolink versions , since this does not belong to its public API. I'll do my best to keep things up to date.
 
An example and an explanatory blog post are also available.
- Original implementation based on this idea by @nerdcave.
 
The gem is available as open source under the terms of the MIT License.