【问题标题】:Properly setting up coffee script with my ruby on rails page在 rails 页面上使用我的 ruby​​ 正确设置咖啡脚本
【发布时间】:2014-06-01 03:26:01
【问题描述】:

我正在查看how to use javascript in ROR. 上的基本指南 我熟悉 javascipt(和 jquery),但不熟悉咖啡脚本。

该指南非常简单。我只是想念我应该把咖啡脚本放在哪里让它工作。

我正在尝试制作

paintIt = (element, backgroundColor, textColor) ->
  element.style.backgroundColor = backgroundColor
  if textColor?
    element.style.color = textColor

功能工作。

我放了

<a href="#" onclick="paintIt(this, '#990000')">Paint it red</a>

在我的分隔线中。还有我的 \assets\javascripts\pages.js.coffee 中的代码(尽管我也尝试将基本的 javascript 放在 application.js 中) 然后我运行服务器,当我点击链接时没有任何反应。

我假设我需要编译咖啡脚本并可能将其链接到页面但我不知道如何执行此操作。该指南对此只字未提,我不知道要寻找什么才能使我的脚本正常工作


我想正确设置咖啡脚本,以便它在我的页面中工作(我不知道是否将所有功能设为全局是要走的路,但我假设它不是)

按照 cmets 中的建议,我通过使用 window.paintIt = 使其全局化,从而使 paintIt 功能正常工作。

它有一种奇怪的效果,即只切换背景颜色一秒钟,然后将其恢复为透明背景。

如果你们需要更多信息,我可以提供我的文件的其他内容。

【问题讨论】:

  • CoffeeScript 将所有内容包装在一个自调用函数中,以防止范围泄漏。如果您想将paintIt 放在全局范围内,则必须手动将其放在那里:window.paintIt = ...@paintIt = ...
  • 感谢这项工作,但在 ROR 中设置咖啡脚本的正确方法是什么?此外,只有在元素处于活动状态时才改变颜色有一个奇怪的效果(一旦我松开鼠标按钮,背景颜色就会切换回来)这不是我理解这段代码应该如何工作的方式......
  • 通常你会更像jsfiddle.net/ambiguous/4tLrs 那样做,onclick 属性有点像石器时代。
  • 啊,它不起作用。我尝试在您的代码之前使用 jQuery -> 但它没有修复它。 :( 还有一种方法可以在不使函数全局化的情况下使用咖啡脚本吗?
  • 是的,不要使用onclick 属性,你不需要全局的东西。 “不起作用”是什么意思?

标签: javascript ruby-on-rails-4 coffeescript


【解决方案1】:
  1. 通过将 gem 'coffee-rails' 附加到您的 Gemfile 来添加 CoffeScript Rails 集成 gem
  2. 通过运行bundle 安装依赖项
  3. 需要application.js中的脚本

    //= require pages
    
  4. 不要使用onclick,在JS代码中设置点击事件处理函数:

    paintIt = -> #....
    
    $ ->
      $('a').click -> paintIt(@, '#990000')
    

【讨论】:

  • 它几乎可以工作了。我的 application.js 中缺少 //= 要求页面。但是有一个错误,当我单击链接时,它会闪烁一次红色,然后变回透明背景。最重要的是,当我再次单击链接时,它什么也没做。
  • 我只是发布一个关于它的新问题。
猜你喜欢
  • 1970-01-01
  • 2019-05-02
  • 2013-05-15
  • 2011-11-08
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 1970-01-01
相关资源
最近更新 更多