rails,解析json数组以获得自动完成功能

时间:2012-04-16 17:21:08

标签: jquery ruby-on-rails json autocomplete

我想知道在这种情况下是否有办法解析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来说,我还是一个新手。我正在关注一个轨道广播。 非常感谢帮助=)

1 个答案:

答案 0 :(得分:2)

您的自动填充操作必须呈现类似

的内容
render json: @tags.map{ |tag| {:label => "#{tag.name} x #{tag.count}", :value => tag.name} }