Ruby on rails 在Rails中正确创建和调用Coffeescript函数
我正在使用此函数返回 如果将其放置在视图的脚本块中,我将其称为:Ruby on rails 在Rails中正确创建和调用Coffeescript函数,ruby-on-rails,coffeescript,Ruby On Rails,Coffeescript,我正在使用此函数返回 如果将其放置在视图的脚本块中,我将其称为: $('#array_text').val(unique(colData).join('; ')); 但是,当我将其“翻译”为Coffeescript并将其放入相关的Coffeescript文件中时 unique = (array) -> $.grep array, (el, index) -> index is $.inArray(el, array) 虽然函数在关联的.js文件中显示为正确呈现 va
$('#array_text').val(unique(colData).join('; '));
但是,当我将其“翻译”为Coffeescript并将其放入相关的Coffeescript文件中时
unique = (array) ->
$.grep array, (el, index) ->
index is $.inArray(el, array)
虽然函数在关联的.js文件中显示为正确呈现
var unique;
unique = function(array) {
return $.grep(array, function(el, index) {
return index === $.inArray(el, array);
});
};
当我以相同的方式从视图的脚本块调用unique时,我会遇到一个错误
Uncaught ReferenceError: unique is not defined
我希望
unique()
在环境中是一个“全局”函数。rails中coffee脚本文件中定义的每个javascript函数的作用域仅限于本地文件,因此默认情况下,它在文件外不可见。如果要在全局范围内使用函数,必须在开始处用@
符号定义它
@unique = (array) ->
$.grep array, (el, index) ->
index is $.inArray(el, array)
现在,您可以在任何地方使用它,在脚本块中编写的代码应该可以再次工作
@unique = (array) ->
$.grep array, (el, index) ->
index is $.inArray(el, array)