rails仅包含某些页面上的javascript或文件

时间:2011-10-01 22:02:55

标签: javascript ruby-on-rails

好的我对rails一般是新手,这些默认的加载器和缓存加载器是他们对我有意义的所有东西。但我的问题是。如果我想在特定页面上包含某个JS文件或2或特定脚本,我该怎么做。

我有铁轨 我收集的这个文件中的app / views / layouts / application.html.erb是我的网站/服务的基本模板,在那里我会放置所有可移动的部分。但是我偶尔会需要在特定页面上加载javascript文件。但它需要在jquery文件之后调用,因此在我想要加载的文件之前将jquery加载到内存中。所以我不确定如何接近这一点。在布局中的原因我有javascript加载器行,无论它究竟是什么我不记得但它的:默认不少,这意味着jquery和应用程序将默认从API告诉我加载。

这让我想到了另一个问题,那个最初设置rails服务器的人我们已经添加了一个文件到我想模仿的默认值,但不知道怎么做。

3 个答案:

答案 0 :(得分:3)

content_for可能对您有所帮助,请查看包含该段代码的示例:<%= yield :script %>

或者,考虑一下如何允许JS代码检测它是否在正确的页面上开始执行(可能是在body标签上设置的类或id),并且只有在满足该条件时才执行。然后,您可以在第一页加载时将整个javascript集合压缩并缩小到用户的浏览器,从而提高网站性能。

答案 1 :(得分:3)

最简单的方法是将脚本文件包含在您需要的视图中。 jQuery已经在布局中加载了。 或者,您可以使用content_for,如ctcherry提到的那样。您可以在此处找到更详细的说明:Javascript Include Tag Best Practice in a Rails Application

另外,关于你的上一个问题,我不确定我是否理解正确,但你可以添加更多选项到以逗号分隔的javascript_include_tag:

javascript_include_tag :defaults, "my_other_file", "etc"

答案 2 :(得分:-1)


可用于此:

<head>
<title>My blog</title>
<%= yield(:head) -%>
</head>

从那里发送它:

<%- content_for(:head) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>

这是一项很好的工作!