ユーザーが配信を確認できるページがあります (通知など)。そのページでは、X をクリックして単一の配信を削除できました。これは、次のコントローラー アクションにリンクされていました。
deliveryies_controller.rb
def destroy
@id = params[:id]
@delivery = Delivery.find(@id)
@delivery.destroy
respond_to do |format|
format.js
end
end
これにより、AJAX 経由で呼び出される次の js ファイルが呼び出されます。
destroy.js.erb
<% if @id %>
$("#delivery<%= @id %>").hide('fast');
<% end %>
<% if current_user.deliveries_count == 0 %> # Used to be current_user.deliveries.empty?
$(".delete, .close").hide('fast');
setTimeout(function() {
$("#message").fadeIn('slow');}
,300);
<% end %>
配送ラインが current_user.deliveries.empty だったのはいつですか? カウンターキャッシュはありませんでしたが、これはうまく機能します。最後の配信が削除された場合、空のメッセージが表示されます。しかし、カウンター キャッシュを追加すると (空の? 呼び出しを繰り返し、データベース ヒットを回避したかったため)、このコードは機能しなくなりました。私は空にしてみましたか?deliveryies_count、deliveries.size、その他いくつかのものがあります。
このコードを変更する必要さえありませんが、deliveries counter_cache を追加すると失敗します。JS ファイルは、配信数が本来よりも 1 多いことを確認します。誰かが理由を知っていますか?