我在rails中遇到一个非常简单的AJAX调用问题。我有一个博客风格的应用程序,每个帖子都有一个“喜欢”的功能。我希望能够使用AJAX onclick增加索引中每个帖子的“喜欢”。我得到了它的工作;然而,DOM在这里有点棘手,因为无论它看哪个部分,它都只会更新TOP部分。因此,如果我在帖子#2上点击“赞”,它将更新并替换帖子#1上的“赞”。
_post partial的代码:
<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>
_postlikes partial的代码:
<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”div。但这是帖子的索引,所以如果我想更新页面上的第二个“postcontent”div,它仍然会替换第一个的html。
我理解这个问题,我只是不知道如何解决它:)
提前致谢!
答案 0 :(得分:1)
更改您的
<div id="postlikes">
到
<div id="postlikes_<%= post.id %>">
然后,
page.replace_html "postlikes_#{@post.id}", :partial => "postlikes", :object => @post
答案 1 :(得分:0)
这是因为您的Div ID对于每个部分都是相同的。你需要做这样的事情:
<div id="<%= dom_id(post) %>">
和
<div id="postlike_<%= dom_id(post) %>">
我不太确定你是如何设置它的,但你需要为每个帖子(以及可能的后喜欢)提供唯一的ID。
Ĵ