是否有可能在管道中有条件地加载某些JS资产?

时间:2013-04-16 14:06:55

标签: ruby-on-rails-3.2 asset-pipeline

我正在使用Stripe让用户订阅我的Rails 3.2应用程序。我有一个Subscription模型,在JS资产中我调用Stripe对象。但是我只将Stripe javascript文件包含在Subscription流程的特殊布局文件中。它不包含在我的主应用程序布局中。

当然,如果我还没有在主应用程序布局模板上包含Stripe JS文件,我会收到错误,因为subscription.js.coffee正在引用Stripe。

除了我设置的特殊订阅模板之外,有没有办法不加载订阅资产?

1 个答案:

答案 0 :(得分:5)

是的,您的application.js清单文件中可能有require_tree

这意味着您的application.js中包含所有coffeescript文件,包括subscriptions.js.coffee。

接下来,你的布局中可能有一条与此类似的线:

<%= javascript_include_tag 'application' %>

这意味着您的应用程序清单文件(包括subscription.js.coffee代码)包含在您的布局中。

解决方案是不在您的应用程序清单文件中包含这段代码。

因此,在您的application.js清单文件中,而不是使用require_tree,您可以执行以下操作:

//= require jquery
//= require jquery_ujs
//= require posts
//= require comments

在清单文件中,我假设你有其他布局,你可以包括这样的订阅。

//= require_jquery
//= require jquery_ujs
//= require subscriptions

请注意,postscomments是示例。