0

在我的用户索引操作中,我正在遍历所有已发布状态更新并按 created_at DESC 排序的用户。

在我的 index.html.view

<% @users.each.do |user| %>
<% user.status = @status %>
<%= @status.content %>

<div id ="like_form">
    <% if @status.has_like_already?(@status, current_user)%>
        <%= render 'already_liked'%>
    <%else%>
    <%= render 'like'%>
    <%end%>
</div>

_like.html.erb

<%= link_to "Like", likes_path(:like_for => @status.id), remote: true, :method=>:post %>

_already_liked.html.erb

<span>Liked</span>

创建.js.erb

$("#like_form").html("<%= escape_javascript(render('users/already_liked')) %>")

问题是我能够喜欢状态更新,并且在第一篇文章中,Like 按钮更改为 Like,但在随后的点击中,Like 按钮不会更改为 Like。这是因为#like_form对于第一个帖子已经更改为不同。由于我正在迭代,我如何获得与 Ajax 一起发布的每个状态的类似功能?

4

1 回答 1

2

您可以将用户 ID 添加到 div,因此您可以唯一的 div 的 ID。

index.html.erb

<div id ="like_form_<%= user.id %>">

</div>

_like.html.erb

<%= link_to "Like", likes_path(:like_for => @status.id, :user_id=>user.id), remote: true, :method=>:post %>

创建.js.erb

$("#like_form_<%= params[:user_id]%>").html("<%= escape_javascript(render('users/unlike')) %>")
于 2013-08-26T07:33:06.057 回答