2013-12-23 4 views
0

비슷한 링크로 실행되는 js 코드가 있습니다 (아약스 포함) - 링크가 다른 경로 (적절한 경로와 메소드로 변경됨)로 표시되고 likes_count가 업데이트 될 모델.counter_cache가 아약스에서 업데이트되지 않았습니다.

값이 업데이트되지 않는 것이 있습니다. 어떤 아약스 (전체 페이지로드)와 은 - 정확히 개체를 저장 한 후,
그것은 작동 $("#likes").html('<%= @artwork.count %>')
를 사용하지만 방법을 만들에 counter_cache

답변

0

의 요점 때 값이

#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 

OK입니다 , 당신은 reload 객체를 좋아해야합니다 :

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

nice! 감사. js에 성공하지 않고 추가하려고했습니다 ... 컨트롤러에서 (사실상 제 경우에는 모델 메서드에서 캡슐화하는 것이 더 정확합니다) 올바른 방법입니다. 감사! – Boaz

+0

awesome;) 대단히 환영합니다. – medBo

관련 문제