пример использования jquery auto complete плагин с рельсами - PullRequest
2 голосов
/ 28 декабря 2011

Было бы очень полезно, если бы кто-нибудь помог мне с примером реализации функции автозаполнения в моем приложении rails. Я попробовал подключаемый модуль jquery auto complete.

Мой контроллер:

def new    
@testers = User.find_by_sql("select * from users where id in(select user_id from user_role_assignments where role_id in (select id from roles where name like 'Tester')) order by name").paginate(:page=>params[:page],:per_page=>30)   
respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @release }
      end
end

Я хочу создать автозаполнение для @ testers

смотреть код:

 = form.label :tester_tokens, "Testers" 
 = form.text_field :tester_tokens

Спасибо за вашу помощь,

Ramya.

1 Ответ

5 голосов
/ 28 декабря 2011

Посмотрите на самоцвет rails3-jquery-autocomplete .Это должно быть основой для вашей реализации.Существует даже пример приложения , в котором объясняется каждый шаг, который необходимо выполнить, чтобы включить его в свое приложение.

На Railscasts.com вы найдете эпизод, объясняющий, как его использовать: Ассоциация автозаполнения (исправлено)

Если это не сработает для вас, вам следует вернуться и задать конкретные вопросы.Из приведенного выше вопроса не ясно, где вы хотите использовать автозаполнение.Обычно он используется для установления (дополнительной) ассоциации с другим объектом, где вы хотите заменить раскрывающийся список или список выбора или список флажков на поле автозаполнения.

СуществуетВ качестве альтернативы, если вы хотите выбрать более одной вещи, взгляните на эпизод Railscasts «Поля токенов» .Поскольку ваш комментарий гласит, что это то, что вы хотите сделать, вот несколько советов, как это сделать (скопировано из моего приложения, вы должны заменить его своим контекстом, это короткая версия Railscasts 258 ):

  • Установите JQuery Tokeninput в ваше приложение Rails.
  • Убедитесь, что ваше приложение знает jquery (используя Gem jquery-rails)
  • Включите файл Javascript jquery.tokeninput.js в свое приложение (синтаксис зависит от используемой версии).
  • Включите в вашу модель следующий код (User ??):

    class User < ActiveRecord::Base
      attr_accessible :name, :tester_tokens
      has_many :testers
      attr_reader :tester_tokens
    
      def tester_tokens=(ids)
        self.tester_ids = ids.split(",")
      end
    
    end
    
  • Включите в свой application.js следующий код:

    $(function () {
      $('#user_tester_tokens').tokenInput('/testers.json', { 
          crossDomain: false,
          prePopulate: $('#user_tester_tokens').data('pre') })
    }); 
    
  • Включите в свой TestersController следующий код:

    class TestersController < ApplicationController
      def index
        @testers = Tester.where("name like ?", "%#{params[:q]}%")
        respond_to do |format|
          format.html
          format.json { render :json => @testers.map(&:attributes) }
        end
      end
    end
    
  • Измените в своем коде просмотра следующую строку:

    = form.text_field :tester_tokens, "data-pre" => @user.testers.map(&:attributes).to_json
    

Вы найдете объяснение всех этих шагов, а также некоторые дополнительные сведения в Railscasts эпизод 258 .

...