【发布时间】:2019-04-01 20:09:43
【问题描述】:
我正在使用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
【问题讨论】:
-
为什么在你的控制器中使用这种upvote方法?它看起来像验证,你应该在模型中进行。
标签: ruby-on-rails ajax