我使用 jquery tokeninput 跟随 railscasts
http://railscasts.com/episodes/258-token-fields-revised
在创建自动完成标记令牌并已成功完成此操作。但是,我一直在尝试添加一个计数属性,非常类似于堆栈溢出标签计数器。
我的标签中有#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”,因为它的计数为 2。
我试过做
tags.map{ |tag| {:label => "#{tag.name} x #{tag.count}", :value => tag.name} }
在我的 else 语句中,但下拉菜单停止渲染。它甚至找不到第一个字母了。我究竟做错了什么?
:label 和 :value 属性不属于整个 jquery 吗?
我也一直在寻找选项
http://loopj.com/jquery-tokeninput/
但我似乎找不到有用的东西,或者至少我能想到......对不起,我对 json 和 jquery 不是很熟悉,所以非常感谢您的帮助 =)
谢谢你。