在页面的最底部包含javascript文件

时间:2012-12-23 09:34:56

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

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

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

//= require_directory . 

即使javascript1.js中不包含Application.js,它也会自动包含在内,不是吗?

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

1 个答案:

答案 0 :(得分:8)

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

这就是我要做的事情:

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

回应第一条评论:

当然,您可以跳过第1步和第3步,然后使用以下网址将{j}添加到layouts/application.html.erb

<%= javascript_include_tag "javascript1" %> 

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

回应第二条评论:

是的,我对你的第一条评论的回应没有解决这个问题。没有简单的方法可以从资产管道中排除文件,因为清单文件明确列出了包含的内容。解决方案是将除javascript1.js之外的所有内容移至assets/javascripts/all,并将//= require_directory .更改为//= require_directory all。另一个丑陋但实用的解决方案是在底部添加//= require_self并将javascript1.js的内容添加到application.js