Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails 3.1中使用不引人注目的Javascript(数据远程)的Coffeescript和Haml_Ruby On Rails_Coffeescript_Haml_Unobtrusive Javascript - Fatal编程技术网

Ruby on rails 在Rails 3.1中使用不引人注目的Javascript(数据远程)的Coffeescript和Haml

Ruby on rails 在Rails 3.1中使用不引人注目的Javascript(数据远程)的Coffeescript和Haml,ruby-on-rails,coffeescript,haml,unobtrusive-javascript,Ruby On Rails,Coffeescript,Haml,Unobtrusive Javascript,我搜索了le interwebs,但没有发现有人遇到与我相同的问题,所以我在这里提出我的问题 我刚开始在Compass、Haml和CoffeeScript中使用Rails3.1,但遇到了一个问题。当我将位于app/assets/JavaScript/index.js中的特定于控制器的JavaScript文件重命名为index.js.coffee并将JavaScript代码转换为CoffeeScript时,一切都按预期进行-该文件由浏览器请求并实时编译为JavaScript。CoffeeScrip

我搜索了le interwebs,但没有发现有人遇到与我相同的问题,所以我在这里提出我的问题

我刚开始在Compass、Haml和CoffeeScript中使用Rails3.1,但遇到了一个问题。当我将位于
app/assets/JavaScript/index.js
中的特定于控制器的JavaScript文件重命名为
index.js.coffee
并将JavaScript代码转换为CoffeeScript时,一切都按预期进行-该文件由浏览器请求并实时编译为JavaScript。CoffeeScript文件中的更改也会触发重新编译

但是,当我尝试使用不显眼的JavaScript(
:remote=>true
)并将视图文件夹
app/views/index/index.js.haml
中已经工作的JavaScript文件重命名为
index.js.coffee.haml
,并翻译包含的代码时,Rails不认为它是需要编译的咖啡脚本


我做错了什么?我是否必须为视图启用CoffeeScript评估?其中?

Rails 3.1中引入的资产管道将自动为您将coffeescript资产编译成javascript,正如您所提到的。视图目前不是这样:只编译app/assets/javascripts中的文件

要在视图中使用Coffeescript,暂时需要使用


更新:根据Kyle Heironimus在下面的评论,这项功能似乎可以由coffe rails提供(请参阅和)

看看如果您改用ERB会发生什么。考虑到HAML是如何工作的,我认为它不能很好地与CoffeeScript甚至javascript一起工作。谢谢!这似乎是朝着正确方向迈出的一步,但并不能完全解决我的问题。我现在可以将我的文件重命名为
index.js.coffee
,它将被正确地处理为CoffeeScript。然而,我需要首先用HAML解析它,因为我需要分配变量。当我尝试
index.js.coffee.haml
时,Rails 3.1仍然无法识别该模板。有可能吗?或者有没有其他方法可以将变量从控制器传递到CoffeeScript,而不必使用HAML将其转换为JSON?好的,在阅读相关问题后,我决定不在视图中使用CoffeeScript,因此坚持使用
index.js.HAML
。有没有人在不引人注目的Javascript中将Ruby变量传递给JS模板时遇到过性能问题?等等,等等,等等,你刚才说你坚持使用index.JS.haml吗?我认为根据你刚才提到的评论,正确的方法是使用index.js.coffee而不是index.js.haml。haml假设您仍然在haml文件中呈现javascript,而.js.coffee将是完全不引人注目的,特别是如果您使用了现在几乎所有人都建议使用的html5的数据标记。你能解释一下你的决定吗。这让我有点困惑。不,我决定退回到纯Javascript/Haml的原因是我不确定Haml(或我现在使用的Slim)是否会在每个请求时重新编译Coffeescript代码,因此性能考虑。但是,我正在构建的当前应用程序没有使用不引人注目的Rails/JS驱动程序,因为在部署请求之前/之后,我必须处理很多事情。因此,我现在在页面加载时将整个JS代码传输到浏览器。也许有人能解释一下重新编译的问题?哦,我又想到了;)另一个问题是在返回JS/Coffee视图时绕过了资产管道——因此没有缩小/混乱!