如何在rails 4中包含页面特定的javascript

时间:2016-01-23 05:54:01

标签: ruby-on-rails ruby-on-rails-4

进行谷歌搜索会为旧版本的rails提供折旧答案,或者说使用turbolinks。我喜欢coffeescript文件的想法,但不想写coffeescript中的所有内容有没有办法让item.coffee和item.js文件读取它们。我在轨道演员中看到了这个,但是视频已经很老了,而且这种方法现在似乎不起作用。

如果唯一的方法是使用turbolinks将页面特定的js添加到页面中,该怎么做?

1 个答案:

答案 0 :(得分:1)

我知道你问题的答案;这可能是冗长的......

  

有没有办法让item.coffee和item.js文件读取两个

Coffeescriptpre-processor

SCSS / SASS一样,它通过“coffeescript”代码运行并转换为标准化的JS。简而言之,coffeescript本身并不是一种“语言”,标准JS只是pseudocode

这意味着,如果您使用的是coffeescript扩展程序, 仍然可以使用标准JS:

#app/assets/javascripts/item.js.coffee
alert("hello"); #-> Js
alert "hello"   #-> Cs

......功能相同。

-

  

如果唯一的方法是使用turbolinks将页面特定的js添加到页面中,该怎么做

这不是“唯一”的方式。 It's no way at all

  

不是让浏览器在每次页面更改之间重新编译JavaScript和CSS,而是[Turbolinks]使当前页面实例保持活动状态并仅替换主体(或部分)和头部中的标题

如果资产保持不变,则Turbolinks会替换您网页的<body>(通过消除每次重新初始化资产的需要来加快网页加载速度)。

当然,这是空的&amp;处理不同资产时无效。

如果您拥有不同的资产集(不同的布局等),Turbolinks将根据情况重新加载:

#app/views/layouts/application.html.erb
<%= stylesheet_link_tag :application, (:transactions if controller_name == "transactions") %>

在这种情况下,Turbolinks刷新整个页面,这将通过刷新更新您的资产。