投票を追加/削除するための+/-の非常に単純な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-method
delete
class="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
と、クリックすると、削除に変更されてもアクション-
が実行されます。なぜですか?create
data-method