如何在Rails 3上从js.erb调用coffeescript函数以及如何理解Javascript中的作用域
咖啡车如何在Rails 3上从js.erb调用coffeescript函数以及如何理解Javascript中的作用域,javascript,ruby-on-rails,ruby-on-rails-3,coffeescript,erb,Javascript,Ruby On Rails,Ruby On Rails 3,Coffeescript,Erb,咖啡车 $(document).ready -> add_book: () -> alert "hihi!!" 我已尝试调用window.add_book();并添加_book();在 将_添加到_cart.js.erb 但两者都不能起作用 add_book(); window.add_book(); Firebug或Webrick控制台上没有显示错误 顺便说一下,我不明白 变量或函数在中的含义是什么 (function() {}) 或者当函数被{{}包
$(document).ready ->
add_book: () ->
alert "hihi!!"
我已尝试调用window.add_book();并添加_book();在
将_添加到_cart.js.erb
但两者都不能起作用
add_book();
window.add_book();
Firebug或Webrick控制台上没有显示错误
顺便说一下,我不明白
变量或函数在中的含义是什么
(function() {})
或者当函数被{{}包含时
({
add_book: function() {
return alert("poc123!!");
}
});
是否有任何教程或关键词可以让我找到相关资源
提前感谢我不确定在函数中使用
add\u book:
会得到什么,但这肯定不是您想要的。以下是为您的代码生成的javascript:
$(document).ready(function() {
return {
add_book: function() {
return alert("hihi!!");
}
};
});
您正在返回一个包含函数的对象,但是没有人可以访问它,因为它没有被任何人引用
您需要的是一个变量,能够包含引用:
$(document).ready ->
window.add_book = () ->
alert "hihi!!"
现在,您可以在任何地方使用它(当然是在domready之后),直接调用add\u book()
如果您使用chrome,可能会帮助您发现coffeescript问题:它是一个活动的shell,可以让您查看计算的js并运行coffeescript代码
另一方面,我建议在你熟练使用javascript之前不要使用coffeescript。原因是你不能在js erb或coffee erb中使用
$(document).ready
当您通过Ajax交付此js erb时,文档已经准备好很长时间了。如果erb中的函数处于文档就绪状态,则永远不会有机会调用它们
因此,简单的解决方法是,删除文档并直接调用函数。您将从这里@rubyst获得答案,这种情况不同。