javascript - 如何在 Rails 3 上从 js.erb 调用 CoffeeScript 函数以及如何理解 Javascript 中的作用域

标签 javascript ruby-on-rails ruby-on-rails-3 coffeescript erb

carts.js.coffee

$(document).ready ->
    add_book: () ->
        alert "hihi!!"

我尝试调用 window.add_book();和 add_book();在

add_to_cart.js.erb

但是两者都不能工作。

add_book();
window.add_book();

并且 Firebug 或 Webrick 控制台上没有显示错误

顺便说一句,我听不懂

变量或函数在

中的含义是什么
(function() {})

或者当函数被 {{ }} 包含时

({
add_book: function() {
return alert("poc123!!");
}
});

有什么教程或关键词可以让我找到相关资源吗?

提前致谢

最佳答案

原因是你不能在 js erb 或 Coffee erb 中使用 $(document).ready

当你通过Ajax交付这个js erb时,文档已经准备好很长时间了。如果 erb 内的函数处于文档就绪状态,则它们将永远不会有机会被调用。

所以简单的修复方法是,删除准备好的文档,然后直接调用函数。

关于javascript - 如何在 Rails 3 上从 js.erb 调用 CoffeeScript 函数以及如何理解 Javascript 中的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19680347/

相关文章:

ruby-on-rails - 设置用于在 Rails 中发送邮件的 SMTP 设置

javascript - Node 开发不连续运行

javascript - Typescript - 自执行匿名函数

javascript - 如何从数组中删除对象并保存以供以后使用?

ruby-on-rails - 设计:让用户以两种方式登录

ruby-on-rails - 如何在 Rails 中将当前时间添加 10 天

jquery - javascript动态填充下拉列表框

javascript - 由 google charts js 提供的自定义圆环图

javascript - IE 跟随链接甚至在 onclick ="return false;"之后

javascript - Heroku bootstrap 导航栏不渲染