在rails 3.1中从html调用javascript函数

在rails 3.1中从html调用javascript函数,javascript,jquery,coffeescript,ruby-on-rails-3.1,sprockets,Javascript,Jquery,Coffeescript,Ruby On Rails 3.1,Sprockets,使用rails 3.1中的coffeescript、jQuery和链轮,coffeescript文件被编译成如下块: (function() { var a; var b; var c; foo = function() { alert("foo"); } bar = function() { alert("bar"); } }).call(this); 这似乎将函数foo和bar移出了全局范围,因此foo可以调用bar,但这两个函数都不能从html代码中调用。当我试

使用rails 3.1中的coffeescript、jQuery和链轮,coffeescript文件被编译成如下块:

(function() {
 var a;
 var b;
 var c;
 foo = function() { 
  alert("foo");
 }
 bar = function() {
  alert("bar");
 }

}).call(this);
这似乎将函数foo和bar移出了全局范围,因此foo可以调用bar,但这两个函数都不能从html代码中调用。当我试图从selectonchange元素调用foo时,我得到一个“找不到变量:foo”

现在的解决方法是将所有全局可用的函数移动到.js文件中。但正确的方法是什么呢


谢谢

我更喜欢声明顶级对象(用于名称空间),并将我需要访问的所有函数附加到它

在文件的顶部,添加如下内容

window.App = window.App || {};
然后声明你的函数

var foo = function() { ... };
var bar = function() { ... };
最后,需要出口功能

window.App.foo = foo;

有些相关的信息-

我和Dogbert的做法相同,您可能想查看此选项以获得其他选项(包括此选项)