2012-01-10 60 views
1

我正在升级Rails应用程序。虽然我设法翻译更简单的JQuery调用,但我却遇到了更复杂的JQuery自动完成。将JQuery-Javascript调用转换为Coffeescript(Rails 3.1)

的Javascript

$(document).ready(function() { 
    var data_category = <%= @autocomplete_categories %>; 
    $("#entry_category").autocomplete({ 
     source: function(req, responseFn) { 
      var re = $.ui.autocomplete.escapeRegex(req.term); 
      var matcher = new RegExp("^" + re, "i"); 
      var a = $.grep(data_category, function(item,index) { 
       return matcher.test(item); 
      }); 
      responseFn(a); 
     }, 
     minLength: 0, 
     delay: 0, 
     autoFocus: true 
    }); 

Coffescript:

$ -> 
    data_category = <%= @autocomplete_category %>; 
    $("#entry_category").autocomplete({ 

我不管理这两个函数的平移,请告知正确的语法!

回答

1
$ -> 
    data_category = <%= @autocomplete_categories %> 
    $('#entry_category').autocomplete 
    source: (req, responseFn) -> 
     re = $.ui.autocomplete.escapeRegex req.term 
     matcher = new RegExp "^#{re}", 'i' 
     a = $.grep data_category, (item, index) -> matcher.test item 
     responseFn(a) 
    minLength: 0 
    delay: 0 
    autoFocus: true 
+0

接近perfekt。 JQuery被调用,但是,列表是空的。我添加了警报data_category,并导致未定义。 _forms.html.erb(部分)<%= @autocomplete_categories%>中的调试输出显示列表元素。任何想法如何解决这个问题? – 2012-01-11 19:49:38

+0

我其实不知道Rails,但是列表的正确名称是?在你的Javascript中你有'autocomplete_categories',但在你的咖啡脚本中有'autocomplete_category'。这是在Javascript中工作吗? – loganfsmyth 2012-01-11 20:15:52

+0

是的,只是重新检查,它在JS中工作,而不是上面的代码。问题似乎是@autocomplete_categories未在此范围内分配或可用。 'data_category = <%= @autocomplete_categories%> alert(<%= @autocomplete_categories%>)alert(data_category)'并且这两个警报显示为未定义。在视图中,'@ autocomplete_categories'的调试显示列表,因此视图对应视图具有数据。 – 2012-01-11 21:47:42