当我尝试以下面的 @line_item.id 形式访问实例变量 id 时,我收到错误 - (当我记录调试值时为 nil)。 但是 [:id] 工作正常为什么?
@cart = current_cart
@line_item = @cart.line_items.find_by_id(params[:id])
@line_item = @line_item.decrement_quantity(@line_item[:id])
正如@Kyle所说,@line_item.id 和 @line_item[:id] 应该返回相同的值。
还有一个,因为您在不需要的对象上调用@line_item
实例方法 @line_item.id
作为方法的参数。您可以直接访问self.id
内部方法
我建议写一些类似的东西——
@cart = current_cart
@line_item = @cart.line_items.find_by_id(params[:id])
@line_item.decrement_quantity
## inside model
class LineItem <
def decrement_quantity
puts self.id # will print the id of object calling method
end
end