Пометка с автозаполнением в Rails - PullRequest
7 голосов
/ 16 апреля 2011

Мой (долго, я извиняюсь) вопрос является продолжением: Как добавить теги с автозаполнением к существующей модели в Rails?

Я использую acts-as-taggable-on иrails3-jquery-autocomplete и пытаюсь настроить систему (во многом как переполнение стека), в которой пользователи начинают вводить теги, а предложения появляются в раскрывающемся списке.

Цель

Яв новой форме answers # и я хочу увидеть список тегов, которые относятся к questions .т. е. представьте себе, что находитесь на SO, ищите новые вопросы по Rails и ищите ra.Ruby-on-Rails всплывает, вы щелкаете по нему, и вы видите список вопросов в RoR, на любой из которых вы можете ответить.

Это шаги, которые я предпринял.

  1. Установлены оба камня.Кажется, что оба работают самостоятельно.
  2. Добавлено <%= javascript_include_tag "ui/jquery.ui.position", "ui/jquery.ui.autocomplete", "autocomplete-rails.js", "rails.js", "application.js" %>.(У меня уже есть Jquery, UI Core и UI Effects.)
  3. Контроллер ответов: я добавил сверху autocomplete :question, :tags, :full => true.Я также пытался autocomplete :tag, :name, :full => true.
  4. Question.rb: acts_as_taggable_on :tags.
  5. Просмотр:
    <%= form_tag new_answer_url, :method => "get" do %><br> <%= autocomplete_field_tag "tag_list", 'tags', autocomplete_question_tags_answers_path %><br> <% end %>

Простое автозаполнение (без тегов) работает (но это работает только один раз на загрузку страницы).С пометкой, нет успеха.

Проблемы

С большим количеством экспериментов (и много часов) я получаю следующие проблемы:

  1. Я получаю NameError (unitialized constant Tag) на сервереответ на начальную запись.
  2. При реализации без тегов (в поиске самого простого текста вопроса) я получаю раскрывающийся список в стиле автозаполнения JQuery, но мои курсоры не могут получить доступ к опциям с помощью кнопок вверх / вниз.Я должен щелкнуть по ним мышью.Кроме того, выпадающий список не исчезнет, ​​пока я не перезагрузлю страницу!
  3. После того, как сервер один раз отреагирует результатами (как я уже говорил, работает только non-taggable), он больше не реагирует на нажатия или изменения клавишв текстовой записи.

Я был бы очень признателен за любую помощь, которую вы можете оказать.Я прошел несколько уроков шаг за шагом, но сегодня мне не повезло.

Ответы [ 2 ]

4 голосов
/ 25 апреля 2011

Я знаю, что он отвечает только на один из ваших вопросов, но мне удалось решить проблему «тега унитарной константы», явно указав имя класса в моем контроллере:

autocomplete :tag, :name, :class_name => 'ActsAsTaggableOn::Tag'

Кажется, что некоторые из изменений в библиотеке activ_as_taggable_on нарушили основополагающее предположение, что класс Tag существует.

Помимо этого, я сам заметил странное поведение, когда у меня не было jquery-ui css правильно включен на странице - вы убедились, что все связано правильно?

0 голосов
/ 16 апреля 2012

Я замечаю, что ты скучаешь по твоим маршрутам.Я должен был поставить что-то вроде этого:

resources :resources do
  get :autocomplete_resource_tag, :on => :collection
end

В моем _form.html.erb

<%= f.autocomplete_field :tag_list, autocomplete_resource_tag_resources_path %>

Теперь моя проблема в том, что автозаполнение все еще не любит меня

SQLite3::SQLException: no such column: resources.tag: SELECT  resources.id, resources.tag FROM "resources"  WHERE (LOWER(resources.tag) LIKE 'woo%') ORDER BY resources.tag ASC LIMIT 10
Completed 500 Internal Server Error in 1ms

ActiveRecord::StatementInvalid (SQLite3::SQLException: no such column: resources.tag: SELECT  resources.id, resources.tag FROM "resources"  WHERE (LOWER(resources.tag) LIKE 'woo%') ORDER BY resources.tag ASC LIMIT 10):
...