0

我想知道在这种情况下是否有办法解析 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 还是很陌生。我正在关注一个railscasts。非常感谢您的帮助=)

4

1 回答 1

2

您的自动完成操作必须呈现类似

render json: @tags.map{ |tag| {:label => "#{tag.name} x #{tag.count}", :value => tag.name} }
于 2012-04-16T17:56:09.460 回答