我是RoR的新手。我想知道在控制器中销毁之后对象(特别是实例变量)的值是多少。
例如,在下面的代码中,在控制器中调用destroy方法后, @cart 对象(实例变量)的值是多少。
#app/controllers/carts_controller.rb
def destroy
@cart.destroy
respond_to do |format|
format.html { redirect_to store_url }
format.json { head :no_content }
end
end
此外,我在视图(.html.erb文件)中使用此 @cart 对象来显示购物项列表。在破坏之后,这个 @cart 对象将如何发生在这个视图中。
感谢。
答案 0 :(得分:1)
这取决于很多事情。
简短的回答是@cart
方法调用后.destroy
仍未修改。
答案很长,可以是由 ActiveRecord 或您自己的实现调用的一堆callbacks
,包括销毁此cart
元素的所有相关元素。此外,DB中的记录已被删除,因此如果您尝试加载关系,因为关系通常是 lazy 加载,如果在销毁父元素后加载它,则此关系可以为空。
因此,我建议您在销毁父视图之前加载要在视图中使用的所有元素。
答案 1 :(得分:0)
@cart
指的是Cart
模型的特定实例。
您在此处概述的方式,我假设您使用的是Rails 4,因为实际设置@cart
的代码不在您的destroy
方法中
当DELETE
请求通过HTTP进入时会发生什么情况,Rails会转到您的数据存储并返回绑定到@cart
的副本,当.destroy
被称为数据中的原始项时商店被销毁,@ cart将成为Nil
@cart
不应受到影响,因为每个实例都与数据存储中的数据相关
希望这能回答你的问题。