- Rails (5.1.6)
- turbolinks (5.2.0)
- turbolinks-source (5.2.0)
参考
解決手順
-
'data-turbolinks-track': 'reload'を使用していた - ページ遷移時、JSがロードされなかった
-
jquery:document.readyでturbolinks:loadイベントをバインドすることでJSのロードが必ず実行されるようになった
application.html.haml
= javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
変更したところ $(document).on 'turbolinks:load'
以下は、マークダウンのプレビューを更新させるCoffee Scriptです。
- マークダウン本文の
keyupイベントを監視させて、 - マークダウン結果を要求し
-
#preview_by_ajaxを更新させる
のようなことをやっています。
$.debounce は keyupイベントの間引きをおこなってくれるjQueryプラグイン。便利です。
app/assets/javascripts/markdowns.coffee
- $ ->
+ $(document)
+ .on 'turbolinks:load', ->
$('#item_body')
.on 'keyup', $.debounce( 500, ->
content = $(this).val()
$.ajax({
url: "/markdown/preview",
type: "GET",
data: { content : content },
dataType: "html",
success: (data) ->
$('#preview_by_ajax').html(data)
}))