Turbolinks
Turbolinks в Rails - это отличный способ ускорить загрузку страниц. Суть фишки - в том, чтобы вместо полной перезагрузки страницы при нажатии на ссылку подгружать только изменившуюся часть. Как я выяснил, пока делал этот блог, подход имеет и подводный камень. При обновлении части страницы не происходит события ready, из-за чего такие вещи, как highlight.js, отвечающий тут за подсветку синтаксиса, не обрабатывают обновлённый контент.
Решением проблемы является использование событий, добавляемых Turbolinks'ом:
page:before-change
a Turbolinks-enabled link has been clicked (see below for more details)page:fetch
starting to fetch a new target pagepage:receive
the page has been fetched from the server, but not yet parsedpage:change
the page has been parsed and changed to the new version and on DOMContentLoadedpage:update
is triggered whenever page:change is PLUS on jQuery's ajaxSucess, if jQuery is available (otherwise you can manually -trigger it when calling XMLHttpRequest in your own code)page:load
is fired at the end of the loading process.
Т.о. для того, чтобы подсветка синтаксиса работала при переходах между страницами я использую такой код (warning: coffeescript sintax!):
$(document).on 'page:change', ->
$('pre code').each (i, e) ->
hljs.highlightBlock(e)