Rails Rails 的中 CoffeeScript 的使用问题

zjnxzy · 2013年04月09日 · 最后由 bo6bear 回复于 2014年10月26日 · 5768 次阅读

以前一种使用的是 Jquery,因为 rails 默认使用的是 coffeeScript,所以该学习 coffeescript,但是遇到下面的问题,希望得到解答。 建立一个 rails 工程,生成一个 welcome 的控制器,然后也就生成了一个 welcome.js.coffee 的文件。 然后在 welcome.js.coffee 写 coffeescript 代码,也一般的 coffee 代码都有用,比如说弹出框:alert“hello”,但是当写下面代码时,去没有效果了:

gcd = (a,b) -> if (b==0) then a else gcd(b, a % b) $("#button").click -> a = $("#a").val() b = $("#b").val() $("#c").html gcd(a,b) 备注,不知道怎么缩进代码,后面三行有缩进的。 页面上的代码: A: <input type="text" id="a"/><br/> B: <input type="text" id="b"/><br/> <input type="button" value="Calculate GCD" id="button"/> <br/> C: <span id="c"/>

发生的情况就是单击按钮事件没有反应,我是在 window 环境下测试的,rails3.2.9. 求解答是什么原因。。。。。

补充:后面发现好像是 Jquery 无法使用,但是我不知道为什么 jquery 为什么不能使用,我是一个新建的 rails 项目,什么都没有改,在 application.html.erb 页面中的 head 中用下面的测试代码: <script type="text/javascript"> $('#b').click(function(){ alert("hello"); }); </script> 发现没有任何反应,求解是什么原因?

不是很确定

可以用三个`表示代码块 看下 markdown 文档

#1 楼 @krazy 刚才发现很奇怪的一件事,就是 JQuery 用不了,不知道是什么原因

#2 楼 @zjnxzy 原来是这样..

#3 楼 @krazy 但是还是没找到原因,为什么 jquery 没有用,明明已经加载了 <script src="/assets/jquery.js?body=1" type="text/javascript"></script> 你知道有什么可能吗?

喝咖啡的好像不多啊,似乎不太好喝,资料也少。

#5 楼 @chenge 貌似网上说它很牛呀。。。。

#6 楼 @zjnxzy 有不同意见。我是刚接触,也不知道怎么配置。

#7 楼 @chenge 哦哦哦。。。。嘿嘿!

#7 楼 @chenge 看你的头像还以为是官方人士来解答问题啦。。。。

#9 楼 @zjnxzy 你可以看页面代码,js 没有生成吧。应该是配置问题。

#10 楼 @chenge 生成了,后面测试发现就是 Jquery 没有用,但是不知道到底为什么 Jquery 没用,在 application.html.erb 页面中的 head 中用下面的测试代码: `

$('#b').click(function(){ alert("hello"); });

` 结果页面没有反应。。

#11 楼 @zjnxzy 你需要有 jquery.js 文件,检查下。

没有 jq,你那个代码当然没用的。

#12 楼 @chenge 有 jquery.js 文件

有进展,我的 coffee 可以运行了。但是你那个按钮还没找到原因。

#13 楼 @zjnxzy

(function() {
  var gcd;

  gcd = function(a, b) {
    if (b === 0) {
      return a;
    } else {
      return gcd(b, a % b);
    }
  };

  $("#button").click(function() {
    var a, b;
    alert("hello");
    a = $("#a").val();
    b = $("#b").val();
    return $("#c").html(gcd(a, b));
  });

}).call(this);

这个是结果代码,不知道哪里不对。

#15 楼 @chenge b 取得的是字符串 和 0 对比前 parseInt 一下

#16 楼 @krazy 不是这个问题。是那个按钮绑定不对,没有反应。

#17 楼 @chenge coffee 还是 js? 试试把事件绑定写在

$(function(){

})

里面

解决了,这样写:

$ -> 
    $("#button").click ->
        alert "hello"
        a = $("#a").val()
        b = $("#b").val()
        $("#c").html gcd(a,b)
  1. 打开网页控制台,看看 jQuery 这个变量有没有,如果有,再看看$跟 jQuery 是不是同一个对象。
  2. 看页面源代码,header 部分是否有 jquery 文件,如果有的话,把它单独在 new tab 点开看看(看打不打得开)
  3. 实在不行,试着精简页面加载的 js 到只有 jquery,然后手动在控制台敲代码试试 jQuery 能否正常工作。

你这问题太笼统了,我只能怀疑两点:jquery 文件路径不对导致没加载成功,或者$被你的其他代码替换掉了。

#19 楼 @chenge 谢谢你啦。。。。

#21 楼 @zjnxzy 这个 coffeescript 我的也不行,但是在 coffee 最外层写了个 alert 就可以弹出!能请教一下你怎么做的吗?

#19 楼 @chenge 一年之后发现的我同样也遇到了这个问题,使用你的地方法我也解决了。非常感谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号