我目前正在进行一个项目。我正在为类似的系统使用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' )%> </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>
<% end -%>
在upvote.js.erb
中$('.votee').html('<%= j render partial: 'vote'%>');
$('.likecount-<%= @post.id %>').html('<%= j pluralize(@post.get_upvotes.size, 'like', 'like\'s' )%>');
路线工作正常。 在此先感谢您的帮助。
答案 0 :(得分:0)
我认为错误必须与......有关...
<%= render partial: 'vote', locals: {post: post} %>
......应该是......
@post
-
部分应该摆脱post
并改为<small class="likecount-<%= post.id %>"><%= pluralize(post.get_upvotes.size, 'like', 'like\'s' )%> </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>
<% end -%>
<% end -%>
:
$('.votee#<%= post.id %>').html('<%= j render "vote", locals: { post: @post } %>');
// other line is okay
-
你的JS应该如下:
index
您还应该最好更新id
方法,向votee
div添加<div class='votee' id="<%= post.id %>">
...
</div>
:
from django.core.management import call_command
call_command('flush', '--noinput')
问题可能是JS正在更新所有帖子;实际数据库可能只会针对单个帖子进行更新。