Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中正确创建和调用Coffeescript函数_Ruby On Rails_Coffeescript - Fatal编程技术网

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)