2012-11-12 53 views
0

我有一个Rails 3.2.8应用程序,我最近从3.1升级,我已经将所有的原始application.js代码转换为CoffeeScript。大部分工作正常。但是,我有一个面包屑函数,我在几个未找到的视图中调用它。对于现在,我只是抛出一个警告,看看它是否工作:CoffeeScript功能找不到

product_breadcrumb = (attr) -> 
    alert attr 

这是在一个名为product_search.js.coffee。它正在成功编译,并最终看起来像这样:

(function() { 
    var product_breadcrumb; 
    product_breadcrumb = function(attr) { 
    return alert(attr); 
    }; 
}).call(this); 

我想这是对的,我不知道。无论如何,在萤火虫我得到:

ReferenceError: product_breadcrumb is not defined 

请注意,这是一个Ajax调用。我不知道为什么该功能不可用。毕竟这只是一个函数定义。它不应该仍然可用于来自Ajax调用的呈现的HTML吗?我无法理解为什么找不到这个功能。

+0

如果您在控制台中键入'product_breadcrumb'或'product_breadcrumb(“foo”)',它会返回一个值吗? –

+0

此外,您似乎在编辑的JS中有一个括号不匹配,您可能会粘贴,也可能不重要。 }}中的括号是什么? –

+0

谢谢Jason,剪切并粘贴错误。固定。 – AKWF

回答

2

这需要在全局范围内,然后您需要这样调用它。

你应该写:

root = exports ? this 

并命名功能

root.product_breadcrumb 

,那么你可以在其他地方调用它如预期。

请参阅this answer了解更多更长的解释。