2012-01-10 30 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