как использовать плагин rails3-jquery-autocomplete для автозаполнения нескольких слов - PullRequest
5 голосов
/ 01 августа 2010

Я использовал плагин rails3-jquery-autocomplete, и мне просто интересно, как я могу использовать его для автозаполнения нескольких слов.

например. INPUT рельсы, драгоценный камень он должен сгенерировать автоматический список дважды.

Как решить эту проблему? ..

Ответы [ 2 ]

14 голосов
/ 13 февраля 2011

rails3-jquery-autocomplete теперь поддерживает указание разделителя с помощью параметра data-delimiter, поэтому вам больше не нужно его взламывать:

f.autocomplete_field: теги, autocomplete_tag_business_path,: "разделитель данных" => ','

Я обнаружил это при попытке применить взлом выше и обнаружил, что в этом нет необходимости. Прекрасно работает для меня!

6 голосов
/ 01 августа 2010

плагин rails3-jquery-autocomplete?Кажется, что он не поддерживает множественное автозаполнение, вам нужно изменить код плагина!Если вы настаиваете на своих прежних идеях, следуйте моим шагам.

  1. Запустите bundle show rails3-jquery-autocomplete, чтобы плагин работал directroy
  2. mate /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)
    

    end

  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, чтобы избежать перезаписи после запуска установки пакета.

Удачи!

...