我使用的是acts_as_votable gem,并且尝试在不重新加载页面的情况下更新视图页面上的点赞数。我已经尝试了许多指南,并且已经达到页面本身不会重新加载的程度,但是所有帖子都消失了,而是随着更新的计数重新出现。我正试图阻止发布这些信息。 remote.request_ip的目的是无需创建帐户即可进行投票。
视频控制器
def like
@video.upvote_from current_user
render layout: false
end
def upvote
@video = Video.find(params[:id])
@ip = request.remote_ip
was_it_upvoted = Ipaddresstracker.find_by(ipaddress: @ip, videoid: @video.id)
if was_it_upvoted
@video.downvote_by User.first
was_it_upvoted.delete
else
Ipaddresstracker.create(:ipaddress => @ip, :videoid => @video.id)
@video.vote_by voter: User.first, :duplicate => true
end
redirect_to :back
end
like.js.haml
:plain
$('#like-count').html("#{@article.get_upvotes.size}");
_index.html.erb
<div class="btn-group">
<%= link_to like_video_path(x), method: :put, remote: :true, id: "like-count", class: "btn btn-default btn-sm" do %>
<span class="glyphicon glyphicon-chevron-up"></span>
Upvote
<div> <%= x.get_upvotes.size %> </div>
<% end %>
<div>
路线
resources :videos do#, only: [:index, :show] do
member do
put "like", to: "videos#upvote"
put "dislike", to: "videos#downvote"
put "like" => "videos#like"
put "unlike" => "videos#unlike"
end
end
答案 0 :(得分:1)
如果要检测其他用户所做的更改,则必须使用操作电缆或插座,但是如果您只想创建类似操作的调用,则必须添加添加:
respond_to do |f|
f.js
end
然后在相应的视图文件中为您的动作添加js代码,以更新您喜欢的动作的视觉效果。例如:
$('#like-count').html("#{@article.get_upvotes.size}");