2010-04-23 47 views
3

我在Rails中遇到了一個非常簡單的AJAX調用問題。我有一個博客風格的應用程序,每個帖子都有一個「喜歡」的功能。我希望能夠使用AJAX onclick在索引中的每個帖子上增加「like」。我得到它的工作;然而,DOM在這裏有點棘手,因爲不管它看着什麼部分,它只會更新TOP部分。所以如果我在帖子#2上點擊「like」,它會更新並替換帖子#1上的「likes」。Ajax page.replace_html Rails中的partials問題

代碼彥博部分:

<div id="postlikes"> 
<%= link_to_remote 'Like', :url => {:controller => 'posts', :action => 'like_post', :id => @post.id}%> 
<%= @post.like %> 
</div> 
</div> 

like_post.rjs代碼:

page.replace_html "postlikes", :partial => "postlikes", :object => @post 
page.visual_effect :highlight, "postlikes", :duration => 3 

所以這一切都正常工作爲先「爲postcontent部分_postlikes

<some code here...> 

<div id="postcontent"> 
Posted <%= post.created_at.strftime("%A, %b %d")%> <br /> 
</div> 

<div id="postlikes"> 
<%= link_to_remote 'Like', :url => {:controller => 'posts', :action => 'like_post', :id => post.id}%> 
<%= post.like %> 
</div> 

代碼「div。但是這是帖子的索引,所以如果我想更新頁面上的第二個「postcontent」div,它仍然會替換第一個的html。

我理解這個問題,我只是不知道如何解決它:)

提前感謝!

+0

爲什麼你有一個帖子喜歡在_post部分和帖子喜歡偏? – 2010-04-23 15:54:20

回答

1

更改

<div id="postlikes"> 

<div id="postlikes_<%= post.id %>"> 

然後,

page.replace_html "postlikes_#{@post.id}", :partial => "postlikes", :object => @post 
0

這是因爲你的事業部ID對每個部分是相同的。你需要做這樣的事情:

<div id="<%= dom_id(post) %>"> 

<div id="postlike_<%= dom_id(post) %>"> 

我也不太清楚,你是如何設置此功能,但你需要爲每一個職位的唯一ID(和潛在的交-likes)。

J