Turbolinksを使用してレールアプリケーションにページをロードすると、DOMには通常jQuery Mobileによって適用されるスタイルがありません。すべてのJavaScriptファイルが実行されます。唯一の問題は、私がJavaScriptのために必要とするスタイルのうち、実際にのを失うことです。例えばTurbolinksがjQuery Mobileクラスを消去します
は、Turbolinksで、私のヘッダーは次のとおりです。
<a rel="external" href="/">MY SITE</a>
それは、なし:
<a rel="external" href="/" class="ui-link">MY SITE</a>
私は私のJSファイルがTurbolinksで実行されていることを確認しました。問題は、予想されるjQuery Mobileクラスが存在しないことです。
ターボリンクをクリックしたときにこれらのクラスの適用を確実にする方法がわかりません。私は、正しい方向やエリアについての提案を感謝します。
私は次の方法でJavaScriptをラップしようとしました:
$(document).ready(function() {
//functions
});
と:私は同じでのCoffeeScriptを包みました
$(document).on('turbolinks:load', function() {
//functions
});
:
ready = ->
#coffee
$(document).on('turbolinks:load', ready)
両方に思えます私の通常のJS/coffeescriptアクティビティのために働くので、それは問題ではありません - それは失われたjQuery Mobileクラスだけです。
私application.jsファイルには、次のとおりです。
//= require jquery
//= require jquery_ujs
//= require jquery.mobile
//= require js-routes
//= require turbolinks
//= require twitter/bootstrap
//= require_tree .
私は無駄にこれらのいくつかの異なる方法の順序を変更しようとしました。
私のすべてのJavaScriptはapp/assets/javascripts/base.js
で書かれていて、app/assets/javascripts
にいくつかのcoffeescriptファイルがあります。
私はjquery-turbolinksを試してみましたが、それは役に立たなかったし、根本的な問題をここに混乱させるようにも思われなかったので削除しました。
私はまたbundle exec rake assets:precompile
(:clean
,:clobber
)を何度も実行していますので、これは問題ではないと思います。
これはすべて開発中ですが、問題は本番環境にも存在します。
私はJQMを使用している場合、おそらくターボリンクを破棄する必要がありますか? http://forum.jquery.com/topic/using-pjax-or-turbolinks-with-jquery-mobile-on-a-rails-app –