All these issues would be solved if you work in the same language on the server and client with an integrated framework. The reason RJS and Turbolinks are so nice to develop with is because it allows you to do exactly that, though in a very limited way. For many applications you want to have a more featureless client-side framework. Ideally you'd share models and templates on the server and the client side; models on the client synchronized with models on the server, and templates automatically updating as models on the client side get changed (as you already have in many JS frameworks).