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

AKW*_*KWF 2 asset-pipeline ruby-on-rails-3.2

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

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

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

Arj*_*jan 5

是的,你可能require_tree在你的application.js清单文件中.

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

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

<%= javascript_include_tag 'application' %>
Run Code Online (Sandbox Code Playgroud)

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

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

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

//= require jquery
//= require jquery_ujs
//= require posts
//= require comments
Run Code Online (Sandbox Code Playgroud)

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

//= require_jquery
//= require jquery_ujs
//= require subscriptions
Run Code Online (Sandbox Code Playgroud)

请注意posts并且comments是示例.