【发布时间】:2012-01-07 05:16:45
【问题描述】:
编辑:一年后,如果我要再次这样做,我会使用 curl.js 而不是 Rails 资产管道。
相关:Best way to add page specific javascript in a Rails 3 app?
我正在编写一个应用程序并使用coffeescript 来生成所有的js。这就是为什么相关问题不能满足我的需要。
我希望能够将一个咖啡脚本文件放在我的资产目录的子文件夹中,并且只在一个页面上提供该 .coffee 文件。该页面位于命名路由上
match 'myNotifications' => 'user#notifications'
最明显的做法是将.coffee 文件放入assets\javascripts\user\index.js.coffee。但是在阅读了有关资产的文档后,我并不清楚。
我读到了这一行(来自http://guides.rubyonrails.org/asset_pipeline.html):
您应该将控制器独有的任何 JavaScript 或 CSS 放入其中 它们各自的资产文件,因为这些文件可以被加载 对于这些带有 或 。
好的,所以我将页面特定的 js 放在 assets\javascripts\user.js.coffee 中。然后我重新加载了我的主页,Ctrl F5。 user.js 文件仍在主页上加载。用$ -> alert 'ready from users controller'测试;当我加载主页时看到该警报。
Rails 是否有办法让每页的咖啡脚本文件仅随该页面提供?我读错手册了吗?在 assets 文件夹中是否有一个地方可以放置 .coffee 文件,它们不会随每个页面一起加载?
更新:看起来我可能会have an answer:
有几种方法可以解决这个问题。我们 可以使用 require_directory 而不是 require_tree 因为这只会 加载当前目录而不是子目录中的文件。如果 我们希望对包含的文件进行更多控制,我们可以要求它们 单独而不是包括整个目录。或者我们 可以移动我们想要包含在所有文件中的 JavaScript 文件 页面进入公共子目录。然后我们可以使用 require_tree ./public 仅包含这些文件。
我会在上午试一试。
【问题讨论】:
-
因为我遇到了同样的问题,所以我决定收集一些我在一个地方遇到的不同的解决方案,并在这里做了一个小写:page-specific-javascript-in-rails-3
标签: ruby-on-rails ruby-on-rails-3 coffeescript