什么时候javascript文件链接到rails视图?

时间:2012-05-23 17:38:50

标签: javascript ruby-on-rails

在我的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

3 个答案:

答案 0 :(得分:1)

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

// = require_tree。

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

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

答案 1 :(得分:0)

听起来您的某个视图或布局中包含<% javascript_include_tag :all %>,这会导致public/javascripts中的所有文件都被包含在内。 Documentation is here

有问题的文件也可能已添加到config.action_view.javascript_expansions[:defaults]中的config/application.rb,如果您某处<% javascript_include_tag :defaults %>,则会导致该文件被加载。

答案 2 :(得分:0)

您的layout / application.html.erb基于您的任何视图(请参阅yield instuction)。在任何视图(任何控制器#方法调用)rails渲染布局此当前视图文件的yield。显而易见,js "Logging from the application.html"在每个刷新页面(不是AJAX)上运行。

关于包含外部JS,请参阅上一篇文章。如果你想获得特定页面的js,请阅读Best way to add page specific javascript in a Rails 3 app?