2012-08-14 114 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