Javascript 从Rails视图调用JS函数

Javascript 从Rails视图调用JS函数,javascript,ruby-on-rails,coffeescript,Javascript,Ruby On Rails,Coffeescript,以下是我的看法: <a href="#" onclick="delete_quote(this);" class="quote-delete"> <i class="fi-x small-1"></i> </a> $(document).ready部分工作正常,但当我按下链接时,我没有收到'two'消息,并且在浏览器控制台中出现错误: Uncaught ReferenceError: delete_quote is not def

以下是我的看法:

<a href="#" onclick="delete_quote(this);" class="quote-delete">
  <i class="fi-x small-1"></i>      
</a>
$(document).ready部分工作正常,但当我按下链接时,我没有收到'two'消息,并且在浏览器控制台中出现错误:

Uncaught ReferenceError: delete_quote is not defined 
以下是编译后的JS文件:

(function() {
  var delete_quote;

  $(document).ready(function() {
    $('a.quote-delete').hide();
    $('div.quote').mouseenter(function() {
      return $(this).children('a.quote-delete').show();
    });
    return $('div.quote').mouseleave(function() {
      return $(this).children('a.quote-delete').hide();
    });
  });

  delete_quote = function(element) {
    return alert('hi');
  };

}).call(this);

CoffeeScript将
delete_quote
函数放在函数闭包中,因此它不是页面上全局上下文的一部分。正在全局上下文中调用
onclick
处理程序中的函数

在这方面,CoffeeScript需要一些额外的帮助。我非常熟悉JavaScript,是CoffeeScript的初学者,因此下面的代码可能不起作用,但应该会告诉您基本的想法。您必须将函数定义为
窗口
对象的一部分:

window.delete_quote = (element) ->
    alert 'Hi'
编辑:您也可以尝试:

this.delete_quote = (element) ->
    alert 'Hi'
另一个StackOverflow问题可能也会有帮助:——虽然这个问题更多地涉及在节点和浏览器中运行CoffeeScript编译的JavaScript,但它涉及到如何定义“全局”变量和函数

this.delete_quote = (element) ->
    alert 'Hi'