0

在我的 rails 应用程序中,在 assets/javascripts 的一个 javascript 文件中,第一行是 console.log("This javascript file is included"). 在我的 application.html 中,我将其包含在头部之后:

<script type = "text/javascript">
console.log("Logging from the application.html")
</script>

我没有在我的任何视图中明确包含 javascript 文件,但控制台会打印:

This javascript file is included.
Logging from the application.html
4

3 回答 3

1

你的 application.js 可能看起来像:

//= 要求树。

“require_tree 指令告诉 Sprockets 以递归方式将指定目录中的所有 JavaScript 文件包含到输出中。这些路径必须相对于清单文件指定。您也可以使用 require_directory 指令,该指令仅包含指定目录中的所有 JavaScript 文件,而无需递归。”

http://guides.rubyonrails.org/asset_pipeline.html

于 2012-05-23T18:00:18.393 回答
0

听起来您<% javascript_include_tag :all %>在其中一个视图或布局中,这会导致public/javascripts包含所有文件。文档在这里

有问题的文件也可能已添加到config.action_view.javascript_expansions[:defaults]in config/application.rb,如果您有某个地方,这将导致它被加载<% javascript_include_tag :defaults %>

于 2012-05-23T17:58:22.653 回答
0

您的 layout/application.html.erb 是您的任何视图的基础(请参阅 yield 指令)。在任何视图(任何 controller#method 调用)上,rails 都会在 yield 中渲染当前视图文件的布局。很明显,js"Logging from the application.html"在每个刷新页面(不是 AJAX)上运行。

关于包含外部 JS,见上一篇。如果您想获取特定于页面的 js,请阅读在 Rails 3 应用程序中添加特定于页面的 javascript 的最佳方式?

于 2012-05-23T18:02:05.943 回答