如何将CoffeeScript(或JavaScript)执行限制在Rails 3.1中的特定控制器和操作?

ada*_*per 9 javascript ruby-on-rails coffeescript

新的Rails 3.1资产管道非常好,但由于所有CoffeeScript(或JavaScript)文件都被融合到每个页面中包含的单个文件中,因此它提出了这个问题:

如何将脚本的执行限制为特定的控制器或操作?我的CoffeeScript中有没有办法知道在请求期间使用了哪个控制器和操作,以便我可以在我的脚本中放置条件语句?

或者我完全以错误的方式接近这个?

ada*_*per 8

Trevor Burnham在这里很好地回答了这个问题:如何将CoffeeScript文件与视图相关联?

他说:

有两种常见的方法:

  1. 使行为以特定元素的存在为条件.例如,运行注册表的代码应该以类似的方式开头

    if $('#signup').length > 0

  2. 使行为以body元素上的类为条件.您可以使用ERB设置主体类.这通常也适用于样式表.代码就像是

    if $('body').hasClass 'user'

如果你对CoffeeScript感兴趣,Trevor正在编写一本看起来非常好的书:http://pragprog.com/titles/tbcoffee/coffeescript

  • 对于解决方案2,您可以尝试https://github.com/tonytonyjan/gistyle,它为您设置约定. (2认同)

elo*_*esp 0

为什么不将特定控制器的 javascript 作为该控制器上的视图(因为它们对应于此,如果如此具体的话)?

如果它们足够通用,您可以使用类、id 或数据 (html5) 标记您的视图,并让您的 javascript 查找它们(这样您就可以重用您的代码)。