2012-04-16 45 views
0

我想知道在這種情況下是否有解析json數組的方法。即時消息爲標籤文本字段做一個自動完成,非常類似於堆棧溢出的標籤文本字段。我想有一個與該特定標籤相關的計數。rails,爲自動完成功能解析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。 感謝這麼多的幫助=)

回答

2

你自動完成的動作必須呈現類似

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

哇,我不知道你能做到這一點。非常感謝!我會牢記這一點 – Sasha 2012-04-16 20:17:20