2012-08-14 62 views
0

当我尝试以下面的@ 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]) 
+0

你确定你想同样的实例变量被分配在两条线?你可以检查@line_item的类(puts @ line_item.class) – 2012-08-14 04:39:12

+0

记录器的输出为“line item class is LineItem”;我不必使用相同的实例,但我不会在这里眨眼多少 – 2012-08-14 04:47:22

+1

@ line_item.id和@line_item [:id]应该在处理对象时返回相同的值。在您的轨道控制台 – 2012-08-14 04:51:30

回答

0

正如@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