Что бы вы использовали для автозаполнения в приложении Rails? - PullRequest
2 голосов
/ 02 мая 2010

Я хочу использовать автозаполнение в нескольких полях (5-7) в моих формах. Есть скринкаст по автозаполнению с библиотекой Prototype Райана Бейтса (http://railscasts.com/episodes/102-auto-complete-association). С другой стороны, я заметил, что довольно много парней предлагают jQuery для этой задачи (http://jquery.bassistance.de/autocomplete/demo/). И Наверное, в прошлом году было какое-то развитие событий, поэтому я спрашиваю вас - что бы вы использовали в настоящее время для автоматического заполнения полей формы и почему?

Кстати, у меня все еще есть открытый вопрос по автозаполнению для ассоциации HABTM: Как сделать управление HABTM с автоматическим завершением в Rails?

Ответы [ 2 ]

2 голосов
/ 02 мая 2010

Я использую YUI автозаполнение . Промышленная сила, используемая в Yahoo, Flickr и других веб-ресурсах класса А.

Производительность

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

Создать представление:

# Rake task code for creating a view
def self.search_posts # 
  execute "DROP Table IF EXISTS search_posts"
  execute "DROP View IF EXISTS search_posts"
  execute "CREATE View search_posts AS
  SELECT
     p.id
  ,  p.title
  ,  p.user_id
  FROM posts p
  ORDER BY p.title
  "    
end

Также создайте модель ActiveRecord для SearchPost. Это будет тянуть из вида.

Тогда в вашем контроллере:

# Return the id's and title's matching the search query
# Assumptions: current user id is in Session[:user_id]
#              Auto complete query is in params[:query]
SearchPost.find_all(
  :conditions => ["user_id = ? and title LIKE ?",
                  Session[:user_id], "%#{params[:query]}%"]
  ).collect{|rec| {'title' => rec.title, 'id' => rec.id}.to_json

Выгода

Вы хотите свести к минимуму объем данных, просматриваемых через базу данных для запросов Ajax, которые отправляет вам виджет автозаполнения.

Местное автозаполнение

Еще одна архитектура с автоматическим заполнением - это та, которую использует Flickr: загрузите всю свою базу данных заголовков и идентификаторов в браузер и найдите их локально. См http://code.flickr.com/blog/2009/03/18/building-fast-client-side-searches/

1 голос
/ 02 мая 2010

Отказ от ответственности: Этот ответ охватывает только половину вопроса jQuery, так как у меня нет опыта работы с плагинами Prototype для автозаполнения, я оставлю это для того, чтобы ответить на него кто-то с опытом.

Во-первых, я бы остановился на плагине, написанном на уже используемой платформе, для этого не нужно переключаться с прототипа на jquery или наоборот.

Если вы еще не используете платформу или используете jQuery, я бы рекомендовал автозаполнение пользовательского интерфейса jQuery *1008* (отличающееся от того, которое вы связали), в основном из-за поддержки и расширяемости, которые он предлагает и будет предлагать .

Неважно, на какой платформе вы смотрите, когда плагин формируется или помещается в какую-либо базовую библиотеку ( jQuery UI в данном случае), он получает большую поддержку и сообщество более легко основывается на этом, делая его лучше и более расширяемым. Кроме того, если у вас возникнут проблемы, вы, скорее всего, найдете ответ на свою проблему.

Для части rails есть статьи о том, как использовать этот плагин автозаполнения специально с rails, Я бы начал здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...