2017-06-10 6 views
1

私は上をクリックすると、支払い情報を充填した後 '場所の順序は、' 私ははOrdersController#で、このエラーに未定義のメソッド `各」ゼロについて:NilClass(ActiveMerchant)

NoMethodErrorを

未定義作成取得しますnilのための方法 `各」:NilClass

はOrdersController

def create 
@order = Order.new(order_params) 
@order.add_line_items_from_cart(@cart) 
credit_card = ActiveMerchant::Billing::CreditCard.new(params[:credit_card]) 

respond_to do |format| 
    if @order.save 
    Cart.destroy(session[:cart_id]) 
    session[:cart_id] = nil 
    format.html { redirect_to category_url(Category.first), notice: 'Thank you for your order.' } 
    format.json { render :show, status: :created, location: @order } 
    else 
    format.html { render :new } 
    format.json { render json: @order.errors, status: :unprocessable_entity } 
    end 
end 
end 

次モデル:

attr_accessor :card_no, :card_cvv, :expiry_date 

私はグループに必要な推測している: 'CREDIT_CARD' ラベル付きデータ構造でEXPIRY_DATEが、私は方法がわからない:card_no、:card_cvvとを。ありがとう!

編集:

NoMethodError(未定義のメソッド `各 'ゼロ用:NilClass):

アプリ/コントローラ/ orders_controller.rb:32:`新たに'

アプリ/controllers/orders_controller.rb:32:in `create '

レンダリングC:/RailsInstaller/Ruby2.2.0/lib/ruby/ ........

+0

あなたがこの問題を解決しましたか? –

+0

いいえ、私はしていません。 Pls ??? – JohnnyDevv

+0

エラー全体を追加できますか?どのようなことが起こり、どのようなことが起こるかを知るために。 –

答えて

0

あなたはcard_no、あなたがそれらにアクセスしたい場合、あなたはそれを言うことだ、orderルートからのparamsを取る必要があり、あなたがあなたのフォームから送信しているものに応じてのparamsを取得する必要があり、そうparams[:order][:card_no]となるでしょう。

そしてActiveMerchant宝石を利用するために、新たな「のCreditCard」を作成するためには、あなたがそこにあなたの値を渡す必要がフォームから受け取った、のようなもの:

credit_card = ActiveMerchant::Billing::CreditCard.new(
    :first_name   => params[:order][:first_name], 
    :last_name   => params[:order][:last_name], 
    :number    => params[:order][:card_cvv], 
    :month    => params[:order][:month], 
    :year    => Time.now.year+1, # documentation value 
    :verification_value => '000' # documentation value 
) 
+0

ありがとう....働いた!! – JohnnyDevv

関連する問題