当访问ruby/rails实例变量的属性时返回nil
问题描述:
当我尝试以下面的@ line_item.id的形式访问实例变量标识时,出现错误 - (无记录时,我记录调试值)。但[:id]正常工作 这是为什么?当访问ruby/rails实例变量的属性时返回nil
@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
你确定你想同样的实例变量被分配在两条线?你可以检查@line_item的类(puts @ line_item.class) – 2012-08-14 04:39:12
记录器的输出为“line item class is LineItem”;我不必使用相同的实例,但我不会在这里眨眼多少 – 2012-08-14 04:47:22
@ line_item.id和@line_item [:id]应该在处理对象时返回相同的值。在您的轨道控制台 – 2012-08-14 04:51:30