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

Ruby on rails 如何在rails 4中包含特定于页面的javascript,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,谷歌搜索给出了旧版本rails的降价答案,或者说使用TurboLink。我喜欢coffeescript文件的想法,但不想在coffeescript中编写所有内容。有没有一种方法可以将item.coffee和item.js文件同时读取。我在rails的一个视频中看到了这一点,但那个视频非常陈旧,现在这种方法似乎不起作用 如果唯一的方法是使用turbolinks将特定于页面的js添加到页面中,那么这是如何做到的?我知道您问题的答案;这可能是冗长的 有没有办法将item.coffee和item.js

谷歌搜索给出了旧版本rails的降价答案,或者说使用TurboLink。我喜欢coffeescript文件的想法,但不想在coffeescript中编写所有内容。有没有一种方法可以将item.coffee和item.js文件同时读取。我在rails的一个视频中看到了这一点,但那个视频非常陈旧,现在这种方法似乎不起作用


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

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


有没有办法将item.coffee和item.js文件同时读取

Coffeescript
是一个

SCSS
/
SASS
一样,它通过“coffeescript”代码运行并翻译成标准的JS。简而言之,coffeescript本身并不是一种“语言”,它只适用于标准JS

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

#app/assets/javascripts/item.js.coffee
alert("hello"); #-> Js
alert "hello"   #-> Cs
。。。同样的功能

--

如果唯一的方法是使用turbolinks将特定于页面的js添加到页面,那么该如何实现

这不是唯一的方法

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

如果资源保持不变,TurboLink将替换页面的
(它通过消除每次重新初始化资源的需要而加快页面加载)

当然,在处理不同的资产时,这是无效的

如果您有一组不同的资产(不同的布局等),
Turbolinks
将根据需要重新加载:

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

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

谢谢您的详细回答。如果我将js编码添加到咖啡脚本文件中,它通常会中断。我需要声明它是js编码还是什么?文件名是什么
.js.coffee
应该可以让它正常工作。这就像JS中有
erb
——只有使用
.JS.erb