2013-12-23 31 views
0

我有一個js代碼運行一個像鏈接被點擊(與ajax) - 鏈接變成不像(與正確的路線和方法),並且我想要這些列的likes_count該模型也將被更新。counter_cache在ajax中沒有更新

問題是該值沒有得到更新。 由於沒有阿賈克斯(全頁面加載) - 值是OK

#create.js.erb 
$("#like_link").html("<%= escape_javascript(render("artworks/unlike")) %>") 
$("#likes").html('<%= @artwork.likes_count %>') 

#relevant html snippet from the view 
<div> 
    Total likes: <span id="likes"><%= @artwork.likes_count %></span> 
</div> 

#model - like.rb 
class Like < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :artwork, :counter_cache => true 
end 

當使用
$("#likes").html('<%= @artwork.count %>')
它的工作原理,但缺少的counter_cache

回答

0

點在你創建的方法,準確地保存對象後, ,你應該reload你喜歡它的對象,如下所示:

def create 
    # some code 
    if @like.save 
     @artwork.reload # use reload to get the updated counter cache value 
    end 
end 
+0

不錯!謝謝。我試圖將它添加到js中,但沒有成功......在控制器(實際上在我的情況下,將它封裝在模型方法中更正確)是正確的。謝謝! – Boaz

+0

真棒;)不客氣 – medBo