6

我有一个 Rails 应用程序。还有一个 javascript ( javascript1.js) 文件必须包含在每个视图的最底部。我把它放到 /assets/javascripts 文件夹中。Application.js包含以下代码

//= require jquery
//= require jquery_ujs
//= some other files

//= require_directory . 

即使不包含javascript1.jsApplication.js,它也会自动包含,不是吗?

那么我怎么能做我想做的事呢?

4

1 回答 1

8

单独定义、包含和执行您的 javascript。

这是我要做的:

  • 将您的代码包装javascript1.js在一个函数中。现在解释javascript文件的时间并不重要,因为解释该文件只是添加一个函数供以后使用
  • 将“javascript_footer”视图添加到布局中(例如通过rendercall 或 a javascript_include_tag),然后自动包含在每个视图中
  • 在该页脚中,调用javascript1.js.

回应第一条评论:

当然,您可以跳过第 1 步和第 3 步,并将 javascript 添加到您的layouts/application.html.erb使用中,例如

<%= javascript_include_tag "javascript1" %> 

(假设您正在使用 erb 模板并假设文件位于该javascript_include_tag方法会自动找到它的位置(请参阅http://guides.rubyonrails.org/layouts_and_rendering.html)。

针对第二条评论:

诚然,我对您的第一条评论的回复并没有解决这个问题。没有简单的方法可以从资产管道中排除文件,因为清单文件明确列出了要包含的内容。一个解决方案是移动除javascript1.jstoassets/javascripts/all和 change //= require_directory .to之外的所有内容//= require_directory all。另一个丑陋但实用的解决方案是//= require_self在底部添加并将内容添加javascript1.jsapplication.js

于 2012-12-23T09:41:18.570 回答