我试图让我的投票计数使用javascript更新计数,因此整个页面都没有重新加载。目前它只执行一次,但是如果不刷新页面,则无法再次单击该按钮。如何在没有刷新页面的情况下单击“喜欢”按钮来持续喜欢和不同于引脚?
pins_controller.rb:
def upvote
@pin.upvote_by current_user
respond_to do |format|
format.html {redirect_to :back }
format.json { render json: { count: @pin.get_upvotes.size } }
end
end
def un_upvote
@pin.unliked_by current_user
respond_to do |format|
format.html {redirect_to :back }
format.json { render json: { count: @pin.get_upvotes.size } }
end
end
index.html.haml:
- if current_user.voted_for? pin
= link_to unlike_pin_path(pin), method: :put, :remote => true, class: "btn btn-default vote", data: { type: :json } do
%span.glyphicon.glyphicon-heart
=pin.get_upvotes.size
- else
= link_to like_pin_path(pin), method: :put, :remote => true, class: "btn btn-default vote", data: { type: :json } do
%span.glyphicon.glyphicon-heart
=pin.get_upvotes.size
:javascript
$('.vote')
.on('ajax:send', function () { $(this).addClass('loading'); })
.on('ajax:complete', function () { $(this).removeClass('loading'); })
.on('ajax:error', function () { $(this).after('<div class="error">There was an issue.</div>'); })
.on('ajax:success', function (e, data, status, xhr) {
$(this).find("span").text(data.count);
});