0

jquerytokeninputを使用してrailscastsをフォローしているim

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

オートコンプリートタグトークンを作成し、正常に作成しました。ただし、iveは、スタックオーバーフロータグカウンターと非常によく似たカウント属性を追加しようとしています。

私は私のtags#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」という単語を入力し始めると、ドロップダウンに「steelswarmx2」と表示されます。これは2つのカウントがあるためです。

iveはやってみました

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

私のelseステートメントでは、ドロップダウンがレンダリングを停止します。もう最初の文字を見つけることさえできません。私は何が間違っているのですか?

:label属性と:value属性は全体としてjqueryに属していませんか?

IVEもからのオプションを見てきました

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

しかし、私はうまくいくものを見つけることができないか、少なくとも私は考えることができます...申し訳ありませんが、jsonとjqueryにあまり精通していないので、助けていただければ幸いです=)

ありがとうございました。

4

1 に答える 1

0

それを私が直した。トークンには :id および :name 属性しかないようです。だから私はした..

tags.map{ |tag| {  id: "#{tag.id}", name: "#{tag.name} # #{tag.count}" } }
于 2012-05-21T19:52:26.350 に答える