2010-08-01 6 views
5

Tôi đã sử dụng plugin rails3-jquery-autocomplete và tôi chỉ tự hỏi làm thế nào tôi có thể sử dụng nó để làm nhiều từ tự động hoàn thành.cách sử dụng plugin rails3-jquery-autocomplete cho nhiều từ tự động hoàn thành

ví dụ: INPUT ray, gem nó sẽ tạo danh sách tự động hai lần.

Làm thế nào để giải quyết vấn đề này? ..

+0

Bạn có thể đăng mã mà bạn đã thử không? và sau đó có gì sai với đầu ra? –

+0

Bạn có cần sử dụng plugin rails không? Tôi cho rằng việc thêm jquery-ui vào javascripts của bạn sẽ dễ dàng hơn và cài đặt nó trong javascripts. – skalee

Trả lời

6

rails3-jquery-autocomplete plugin? Dường như nó không hỗ trợ nhiều tính năng tự động hoàn thành, bạn cần phải sửa đổi mã plugin !! Nếu bạn nhấn mạnh vào những ý tưởng cũ của mình, hãy làm theo các bước của tôi.

  1. chạy bundle show rails3-jquery-autocomplete để có được các plugin làm việc directroy
  2. đời /lib/autocomplete.rb
  3. thay đổi define_method như thế này:

    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) 
    

    cuối

  4. sửa đổi autocomplete-rails.js như này 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. khởi động lại máy chủ của bạn và cố gắng

!! hãy nhớ rằng bạn nên sao lưu tự động hoàn thành.rb để tránh ghi đè sau khi bạn chạy cài đặt gói.

Chúc may mắn!

14

rails3-jquery-autocomplete bây giờ hỗ trợ xác định một dấu phân cách sử dụng tùy chọn dữ liệu delimiter vì vậy bạn không còn cần phải hack nó:

f.autocomplete_field: thẻ, autocomplete_tag_business_path,: "dữ liệu delimiter" => ''

Tôi phát hiện ra nó trong khi cố gắng áp dụng các hack ở trên và phát hiện ra nó là không cần thiết. Công trình tuyệt vời cho tôi!