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

从哪里调用launch_faye_updater?

我猜你可以通过移动这条线来解决这个问题:

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

低于其他包括,如下所示:

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

(您可能还需要考虑创建一个新的已编译 JS 文件,其中包含这两个文件。)

于 2012-11-22T09:32:03.493 回答
0

我的 jquery、引导程序和应用程序依赖项也有同样的问题。您可以在 Rails 3.1+ 中按首选顺序交付所有 JS 模块。在您的示例中,您希望在 mobile.js 之前包含 jquery.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 回答