Пример использования jquery auto complete плагин с рельсами
Было бы очень полезно, если бы кто-нибудь помог мне с примером реализации функции автозаполнения в моем приложении 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 ответ
Посмотрите на Gem https://github.com/crowdint/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.