我有一个页面,用户可以在其中看到他们的交付(如通知)。在该页面上,他们可以通过单击 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。有谁知道为什么?