Acts_as_taggable_on и rails autocomplete gem — отображение количества тегов

Я использую гем act_as_taggable_on и гем автозаполнения rails jquery

Я знаю, как получить количество тегов через драгоценный камень

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

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

и добавив еще 2 ключа, которые

:extra_data , :display_value

дополнительные данные будут извлекать больше данных при поиске (не уверен, что это необходимо здесь) display_value вызовет метод из модели, которая ищется с помощью автозаполнения.

Проблема:

Я не знаю, где поместить метод для display_value, который должен быть чем-то вроде

def tags_with_counts
 "#{tag.name} x #{tag.count}
end

Поскольку у меня нет файла модели тегов, чтобы поместить его (поскольку act_as_taggable_on не генерирует такой файл.

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

Что мне делать, чтобы решить эту проблему?


person Nick Ginanto    schedule 02.11.2012    source источник


Ответы (2)


решил это, сделав

class Tag < ActsAsTaggableOn::Tag


  def tagcount
       num = ActsAsTaggableOn::Tagging.where(:tag_id => self.id).count
       "#{Tag.find(self.id).name} x #{num}"
  end


end

и отправка класса «Tag» на вызов rails-autocomplete

person Nick Ginanto    schedule 03.11.2012

Предполагая, что вы включаете директиву acts_as_taggable в одну из своих моделей, вы, по сути, открываете ее для ряда методов и отношений, принадлежащих модулю «действует как пометка». С учетом сказанного, если вы хотите добавить метод, который находится в области действия вашего модуля, который действует как пометка, вы должны просто определить его в той же модели.

Например:

class Upload < ActiveRecord::Base

  acts_as_taggable

  def tags_with_counts
   "#{tag.name} x #{tag.count}"
  end

end

К вашему сведению, в вашем методе tags_with_counts отсутствовала закрывающая двойная кавычка.

person Noz    schedule 02.11.2012
comment
это не работает, так как rails-autocomplete должен быть методом в модели возврата (которая является тегом). Как вставить этот метод, чтобы он стал частью модели? - person Nick Ginanto; 03.11.2012