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>

create.js.erb

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

問題は、私がステータスの更新を気に入ることができ、最初の投稿では [いいね] ボタンが [異なる] に変わりますが、2 回目以降のクリックでは [いいね] ボタンが [異なる] に変わりません。これは#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 %>

create.js.erb

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