0

以下の @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])
4

1 に答える 1

0

@Kyle が言ったように、 @line_item.id と @line_item[:id] は同じ値を返す必要があります。

もう1つ、オブジェクトのインスタンスメソッドを呼び出しているため、メソッドのパラメーターとして@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
于 2012-08-14T07:08:29.143 に答える