【问题标题】:How do I associate a CoffeeScript file with a view?如何将 CoffeeScript 文件与视图关联?
【发布时间】:2011-09-02 06:11:46
【问题描述】:

刚刚安装了 rails 3.1 rc1,我正在尝试探索使用新资产管道管理 javascript 的最佳方法 默认情况下,所有的 coffeescript 都被编译成一个 application.js 文件,这是一件好事。

每个单独的咖啡脚本文件都附加到 js 文件中,并包装在一个匿名函数中,该函数通过 call 方法执行 一个常见的场景是使用一些 jquery 将各种表单转换为 ajax 表单,更新 UI 等......

其中许多脚本将特定于控制器或动作,我正在尝试用“传统”方式来处理这个问题, 因为一切都包装在一个匿名函数中,我怎么只执行 特定控制器/动作的代码,默认情况下所有匿名函数都在执行

我确实玩过一些技巧,我将控制器和动作名称加载到 js 变量中,然后在 coffeescript 检查那些有条件地运行代码,我不太喜欢那个

我最初的想法是每个咖啡文件都包含一个 js 命名空间/对象,我会从视图中调用特定的, 将使用 default_bare = true 配置来提高这一点

How can I use option "--bare" in Rails 3.1 for CoffeeScript?

编辑

环顾四周:这看起来可能是正确的方法 - "Can't find variable" error with Rails 3.1 and Coffeescript

【问题讨论】:

    标签: coffeescript ruby-on-rails-3.1


    【解决方案1】:

    有两种常见的方法:

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

      的开头

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

    2. 使行为以body 元素上的类为条件。您可以使用 ERB 设置身体类别。这通常也是样式表所需要的。代码类似于

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

    【讨论】:

    • 谢谢,我会尝试一下,也可能会尝试使用命名空间来做一些事情,我想我对如何在不引入裸机的情况下处理它有了更好的了解
    • 当然,你可能应该以$ -> 开头每个文件(jQuery 对经典$(document).ready 的新式简写),这使得bare 是多余的......
    • 我觉得这个解决方案很尴尬。我是唯一一个?我发现了 2 个类似的问题和答案:-stackoverflow.com/questions/3437585/…-stackoverflow.com/questions/8284117/…
    • 不,@LucasPottersky,这很丑。我不敢相信更好的解决方案不是 Rails 代码的一部分。还是现在?
    【解决方案2】:

    gistyle 是一个简单的 gem,可帮助您运行特定于操作的 javascript 代码。

    按照它的设置,您可以在 body 元素中设置一些数据属性,表示当前控制器和动作名称。然后它只会在加载相应的视图时调用该操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多