繁体   English   中英

Rails投票Ajax(acts_as_votable)

[英]Rails Voting Ajax(acts_as_votable)

我目前正在一个项目中,正在将acts_as_votable gem用于类似系统。 我使用的是glypicons而不是按钮。 一切正常,但是问题是当我单击“赞”时,每个帖子都被点赞,但是我只希望所选的帖子被点赞。

在post_controller中:

def upvote
    @post = Post.find(params[:id])
    @post.upvote_from current_user
    respond_to do |format|
        format.html { redirect_to :back }
        format.js
     end
end

在index.html.erb中:

<div class='votee'>        
            <%= render partial: 'vote', locals: {:@post => post}%>
        </div> 

在Partial _vote.html.erb中,我有

<small class="likecount-<%= @post.id %>"><%= pluralize(@post.get_upvotes.size, 'like', 'like\'s' )%>&nbsp;</small>
<% if current_user.voted_up_on? @post %>
<%= link_to like_post_path(@post), class: "like", method: :put, remote: true do%>
    <i class="fa fa-heart fa-lg"  style="color:#900603;"></i>&nbsp;
<% end -%> 

并在upvote.js.erb中

$('.votee').html('<%= j render partial: 'vote'%>');
$('.likecount-<%= @post.id %>').html('<%= j pluralize(@post.get_upvotes.size, 'like', 'like\'s' )%>');

路线工作正常。 在此先感谢您的帮助。

我认为该错误与...有关

<%= render partial: 'vote', locals: {:@post => post} %>

... 它应该是 ...

<%= render partial: 'vote', locals: {post: post} %>

-

部分应该摆脱@post并改为post

<small class="likecount-<%= post.id %>"><%= pluralize(post.get_upvotes.size, 'like', 'like\'s' )%>&nbsp;</small>
<% if current_user.voted_up_on? post %>
   <%= link_to like_post_path(post), class: "like", method: :put, remote: true do%>
       <i class="fa fa-heart fa-lg"  style="color:#900603;"></i>&nbsp;
   <% end -%>
<% end -%>

-

您的JS应该如下所示:

$('.votee#<%= post.id %>').html('<%= j render "vote", locals: { post: @post } %>');
// other line is okay

您还需要最佳的更新index方法将添加id到您的votee DIV:

<div class='votee' id="<%= post.id %>">    
 ...
</div>

问题可能是正在更新所有帖子的JS。 实际的数据库可能仅针对单个帖子进行更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM