1

投票を追加/削除するための+/-の非常に単純なajax投票カウンターがあります。

<div class="points pull-left">
  <a rel="nofollow" data-remote="true" data-method="post" href="/entry_votes?id=135">+</a>
  <span id="entry135">2</span>
</div>

クリック+すると、entry_votesビューのjsが実行され、スパン値(この場合は3)が変更され、に変更+され、追加されます。-data-methoddeleteclass="unvote"

以下のコードで機能します。

create.js

$("#entry<%=@entry.id%>").html("<%=@entry.points_count%>")
$("#entry<%=@entry.id%>").siblings().replaceWith('<%= link_to "-",entry_vote_path(id: @entry.id),method: :delete, remote: true, class: "unvote"%>')

destroy.js

$("#entry<%=@entry.id%>").html("<%=@entry.points_count%>");
$("#entry<%=@entry.id%>").siblings().replaceWith('<%=link_to "+",entry_votes_path(id: @entry.id),method: :post,remote: true %>');

ReplaceWithはしたくないのですが、トグルdata-method、+/-、class = "" / "unvoted"の両方で、次のように記述しました。

create.js

$("#entry<%=@entry.id%>").html("<%=@entry.points_count%>")
$("#entry<%=@entry.id%>").siblings().attr("data-method","delete").addClass("unvote").html("-")

初めてクリックすると、問題なく動作し、必要に応じてすべて変更されます。たとえば、+2に変更する-3と、クリックすると、削除に変更されてもアクション-が実行されます。なぜですか?createdata-method

4

0 に答える 0