2010-08-01 37 views
5

我使用rails3-jquery-autocomplete插件,我只是想知道如何使用它來完成多個單詞的自動完成。如何爲多個單詞使用rails3-jquery-autocomplete插件自動完成

例如INPUT軌道,寶石 它應該產生兩次自動列表。

如何解決這個問題?

+0

你可以發佈你已經試過的代碼嗎?然後輸出有什麼問題? – 2010-08-01 16:34:06

+0

你需要使用rails插件嗎?我想只要將jquery-ui插件添加到您的javascripts並將其設置爲javascript即可。 – skalee 2010-08-01 16:44:28

回答

6

rails3-jquery-autocomplete plugin?它似乎不支持多個自動完成,你需要修改插件代碼! 如果你堅持你以前的想法,請按照我的步驟。

  1. 運行bundle show rails3-jquery-autocomplete讓插件工作directroy
  2. 隊友/lib/autocomplete.rb
  3. 修改define_method這樣的:

    define_method("autocomplete_#{object}_#{method}") do 
        arr = params[:term].split(",") 
        unless params[:term] && params[:term].empty? 
        items = object.to_s.camelize.constantize.where(["LOWER(#{method}) LIKE ?", "#{arr[arr.size-1]}%"]).limit(limit).order(order) 
        else 
        items = {} 
    end 
    
    render :json => json_for_autocomplete(items, method) 
    

  4. 修改autocomplete-rails.js像這 function split(val) { return val.split(/,\s*/); } function extractLast(term) { return split(term).pop(); } $(document).ready(function(){ $('input[autocomplete]').each(function(i){ $(this).autocomplete({ source: $(this).attr('autocomplete'), focus: function() { return false; }, select: function(event, ui) { var terms = split(this.value); // remove the current input terms.pop(); // add the selected item terms.push(ui.item.value); // add placeholder to get the comma-and-space at the end terms.push(""); this.value = terms.join(","); return false; } }); }); });

  5. 重新啓動服務器,並嘗試

!請記住,在運行軟件包安裝後,最好備份autocomplete.rb以避免覆蓋。

祝你好運!

14

rails3-jquery-autocomplete現在支持使用數據分隔符選項,以便您不再需要破解它指定一個分隔符:

f.autocomplete_field:標籤,autocomplete_tag_business_path,「數據分隔符」 =>「」

我在嘗試應用上面的黑客時發現它,並發現它不是必需的。對我很好!

相關問題