добавление функции подсчета из раскрывающегося списка тегов с использованием json, jquery и rails

я слежу за railscasts, используя jquery tokeninput

http://railscasts.com/episodes/258-token-fields-revised

в создании токенов тегов автозаполнения и успешно это сделали. однако я пытался добавить атрибут count, очень похожий на счетчик тегов переполнения стека.

у меня в тегах #index

    @tags = Tag.order(:name)
    #@tags = Tag.order(:name).where("name like ?", "%#{params[:term]}%")
    respond_to do |format|
        format.html
        format.json { render json: @tags.tokens(params[:q]) }
    end

когда я визуализирую, он вызывает метод моих токенов, который...

  def self.tokens(query)
    tags = where("name like ?", "%#{query}%")
    if tags.empty?
        [{id: "<<<#{query}>>>", name: "New: \"#{query}\""}]
    else
        puts tags.inspect
        tags
    end
  end

если я наберу слово «steelswarm» и проверю возвращенные теги, на моей консоли появится сообщение...

[#<Tag id: 4, name: "steelswarm", created_at: "2012-05-11 01:49:55", updated_at: "2012-05-11 01:49:55", count: 2>]

когда пользователь начинает вводить слово «steelswarm», я хочу, чтобы в раскрывающемся списке отображалось «steelswarm x 2», так как он имеет значение два.

я пытался сделать

tags.map{ |tag| {:label => "#{tag.name} x #{tag.count}", :value => tag.name} }

в моем заявлении else, но раскрывающийся список останавливает рендеринг. он даже не может найти первую букву. Что я делаю неправильно?

разве атрибуты :label и :value не принадлежат jquery в целом?

тоже рассматривал варианты

http://loopj.com/jquery-tokeninput/

но я не могу найти что-то, что сработало бы или, по крайней мере, я мог бы придумать... извините, я не очень хорошо знаком с json и jquery, поэтому помощь будет очень признательна =)

Спасибо.


person Sasha    schedule 15.05.2012    source источник


Ответы (1)


я починил это. похоже, что токен имеет только атрибуты :id и :name. так я и сделал..

tags.map{ |tag| {  id: "#{tag.id}", name: "#{tag.name} # #{tag.count}" } }
person Sasha    schedule 21.05.2012