2016-12-14 13 views
1

Rubyを使用してバイクを販売するアプリケーション用の簡単なショッピングカートを作成しようとしています。このエラーは私にはうんざりされているので、どんな助けも非常に高く評価されるでしょう!未定義のメソッド '' for nil:NilClass

カートに何かを追加したいときにエラーが表示されます。私のコントローラのラインアイテムやカートのモデルとは関係があります。私のモデルの場合

@lineitem = @cart.add_bike(bike.id) 

:私の表示項目について

def add_bike(bike_id) 
    current_item = lineitems.find_by_bike_id(bike_id) 
    if current_item 
    current_item.quantity +=1 
    else 
    current_item = lineitems.new(bike_id: bike_id) 
    current_item.quantity = 1 
    end 
    current_item   #this is returning the current_item object 
end 

いっぱいで私のエラーがundefined method `add_bike' for nil:NilClass

def current_cart 
    @cart = Cart.find(session[:cart_id]) 
    rescue ActiveRecord::RecordNotFound 
    @cart = Cart.create 
    session[:cart_id] = @cart.id 
    end 
end 
+0

モデルはカートモデルですか? 'add_bike' <>' add_product'というものが見つからない限り? – Doon

+1

コードが不完全なようです。そうでなければ、 '@カート 'は初期化されません。 – Sid

+0

'add_bike'を呼び出すときの残りの部分はどこですか? – lcguida

答えて

1

@cartでは、あなたのコントローラに初期化されず、 nilに等しい。

@cartはカートではなく、add_bikeはカートではないものとして定義されていません。

あなたは@cart.add_bike(bike.id)

アップデートする前に何が起こるか私たちを表示する必要があります:あなたは@cart.add_bike(bike.id)

  • あなたcurrent_cart@cartを定義しますが、@cart.idときを返すを使用する前に、current_cartを呼び出さないように見えます

    • 新しい@cartが作成されます。

  • +0

    私はbefore_action:current_cartを持っていませんでした、のみ:[:create]。それは問題のようです。 – KOD459

    +0

    答えを使って説明を求めるべきではありません。それはコメントです。 – Stefan

    +0

    それは修辞的な質問だったとしよう。彼の 'current_cart'メソッドと彼が得たエラーを考えると、' current_cart'が呼び出されていないことは明らかでした。それでも、私は自分の答えを更新しました。コメントありがとう –

    関連する問題