我想知道在这种情况下是否有办法解析json数组。我正在为标签文本字段做自动完成,非常类似于堆栈溢出的标签文本字段。我想要一个与该特定标签相关的计数。
在我的一个观点中,我有一个......
<div class="tags">
<%= f.label :tag_name, "Tags" %>
<%= f.text_field :tag_name, data: { autocomplete_source: tags_path} %>
</div>
反过来调用我的articles.js.coffee
jQuery ->
$('#article_tag_name').autocomplete
source: $('#article_tag_name').data('autocomplete-source')
在我的代码控制器中我有......
def index
@tags = Tag.order(:name).where("name like ?", "%#{params[:term]}%")
render json: @tags.map{|tag| "#{tag.name} x #{tag.count}"}
end
代码有效,我可以使用ajax从我的标签表中检索我的标签(及其数量)。
但是我也有这个代码在我的模型文件中的文章
def tag_name=(name)
self.tag = Tag.find_or_create_by_name(name) if name.present?
end
它允许用户创建标记(如果它不存在)。我遇到的问题是这个...标签现在标记为“Java x 1”,如果用户选择该标签,数据库现在包含“Java x 1”作为自己的标签而不仅仅是“Java”
是否有单独的方法来解析json数组或jquery分别处理名称和计数?
抱歉,对于所有这些json和jquery来说,我还是一个新手。我正在关注一个轨道广播。 非常感谢帮助=)答案 0 :(得分:2)
您的自动填充操作必须呈现类似
的内容render json: @tags.map{ |tag| {:label => "#{tag.name} x #{tag.count}", :value => tag.name} }