0

こちらがmobile.jsです

//= require jquery
//= require iui
//= require faye-updater
//= require anonymous-chat
//= require anonymous-vote
//= require_self

これが私がスクリプトを含める方法です

<%= content_for :head do %>
<%= javascript_include_tag "#{Settings.faye.address}/client.js" %>
<%= javascript_include_tag "mobile" %>
<% end %>

アセットを再コンパイルした後に得られるもの:mobile....jsは

function launch_faye_updater....

これはfaye-updater.jsの関数であり、jqueryとiuiの後に含める必要があります。また、包含順序が間違っているために機能しません。Railsにアセットを正しい順序で含めるにはどうすればよいですか?

UPD:これは本番モードですRails 3.2.8

4

2 に答える 2

0

jquery、ブートストラップ、およびアプリケーションの依存関係にも同じ問題がありました。Rails 3.1 以降では、すべての JS モジュールを優先順に配信できます。あなたの例では、jquery.js を mobile.js の前に含めたいと考えています。

まず、mobile.js ファイルからjquery を削除します。

次に、次のコード行をapplication.rbに追加する必要があります。

config.assets.precompile += ['mobile.js', 'jquery.js', 'jquery_ujs.js']

この時点で、すべてがプリコンパイルされ、すぐに使用できます。mobile.js には jquery が含まれていないため、好きな順序で含めることができます。

<%= javascript_include_tag "jquery" %> 
<%= javascript_include_tag "mobile" %>

以上です!

于 2013-06-07T15:23:01.763 に答える
0

launch_faye_updater はどこから呼び出されていますか?

この行を移動することで、この問題を解決できると思います。

<%= javascript_include_tag "#{Settings.faye.address}/client.js" %>

他のインクルードの下には、次のように含まれます。

<%= javascript_include_tag "mobile" %>
<%= javascript_include_tag "#{Settings.faye.address}/client.js" %>

(これら 2 つのファイルを含む新しいコンパイル済み JS ファイルを作成することも検討してください。)

于 2012-11-22T09:32:03.493 に答える