【问题标题】:Rails: Ajax for Like button when iterating through status updatesRails:迭代状态更新时的Ajax for Like按钮
【发布时间】:2013-08-26 07:18:45
【问题描述】:

在我的用户索引操作中,我正在遍历所有发布状态更新的用户,并按 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')) %>")

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

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3


    【解决方案1】:

    您可以将用户 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')) %>")
    

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      相关资源
      最近更新 更多