【发布时间】:2012-05-15 22:11:19
【问题描述】:
我使用 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 不是很熟悉,所以非常感谢您的帮助 = )
谢谢。
【问题讨论】:
标签: jquery ruby-on-rails json jquery-tokeninput