0

我有一个页面,用户可以在其中看到他们的交付(如通知)。在该页面上,他们可以通过单击 X 来删除单个交付。这与以下控制器操作相关联

Deliveries_controller.rb

def destroy
  @id = params[:id]
  @delivery = Delivery.find(@id)
  @delivery.destroy
  respond_to do |format|
    format.js
  end
end

这调用了通过 AJAX 调用的以下 js 文件:

销毁.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?并且没有计数器缓存,这可以正常工作。如果最后一次传递被删除,它将显示空消息。但是,当我添加一个计数器缓存(我一直在做空?调用,想尝试避免数据库命中)时,此代码不再起作用。我试过空?还有deliveries_count 和deliveries.size 以及其他一些东西。

我什至不需要更改此代码,但如果我添加交付 counter_cache 这将失败。JS 文件看到交付计数仍然比应有的高 1。有谁知道为什么?

4

0 回答 0