Javascript Rails 4:coffeescript向上投票/向下投票

Javascript Rails 4:coffeescript向上投票/向下投票,javascript,ruby-on-rails,ruby-on-rails-4,coffeescript,Javascript,Ruby On Rails,Ruby On Rails 4,Coffeescript,这与stackoverflow上的类似-您可以向上投票一条评论,当您投票时,它会用橙色箭头标记。但是,我有两个图标(开和关)用于upvote和2个用于downvote。 问题是,当我点击upvote时,它会将图标更改为“on”,这很好,但当我点击downvote之后,upvote保持不变(带有on图标)。所以,我基本上有两个“开”的图标 目标:当您决定更改投票时,上一次选择的图标应为“关闭” -我当前的代码- <div class="thumbsup"> <%= lin

这与stackoverflow上的类似-您可以向上投票一条评论,当您投票时,它会用橙色箭头标记。但是,我有两个图标(开和关)用于upvote和2个用于downvote。 问题是,当我点击upvote时,它会将图标更改为“on”,这很好,但当我点击downvote之后,upvote保持不变(带有on图标)。所以,我基本上有两个“开”的图标

目标:当您决定更改投票时,上一次选择的图标应为“关闭”

-我当前的代码-

<div class="thumbsup">
    <%= link_to image_tag('othericons/thumbsup_off.PNG', height: '20', width: '20', id: "imgClickAndChange", :onclick => "window.changeImage($(this))"),  like_post_comment_path(comment.post_id, comment), method: :put, :remote => true %>
</div>

<div class="thumbsdown">
  <%= link_to image_tag('othericons/thumbsdown_off.PNG', height: '20', width: '20', id: "imgClickAndChange", :onclick => "window.toggleImage($(this))"), dislike_post_comment_path(comment.post_id, comment), method: :put, :remote => true %>
</div>

您可以更好地处理来自服务器的数据:

#app/controllers/votes_controller.rb
def like
     #your code
     status = "on"
     respond_to do |format|
         format.js { render json: status.to_json }
     end
end

#same for dislike, except status = "off"
然后,您可以使用
ajax:success
回调来处理图像:

$(document).on "ajax:success", "#imgClickAndChange", (data) ->
    $(this).attr("src"), "/assets/othericons/thumbsup_"+ data +".PNG")
现在,我甚至不知道你的咖啡脚本是如何启动的?它不受任何事件的约束

$(document).on "ajax:success", "#imgClickAndChange", (data) ->
    $(this).attr("src"), "/assets/othericons/thumbsup_"+ data +".PNG")