2016-04-19 20 views
0

Ich bin eine Spree-App laufen.undefined Methode `+ 'für Nil: NilClass Spree

Ich bekomme unter Fehler, wenn ich versuche, ein Produkt in den Warenkorb hinzuzufügen. nur

undefined method `+' for nil:NilClass 

Dieser Fehler kommt, wenn ich option types und variants des gleichen Produkts hinzuzufügen.

Ich bin mir nicht sicher, was genau hier falsch läuft, weil ich keine Änderungen im Code oder so etwas mache.

Dies ist die extrahierte Quelle, die es zeigt.

if quantity.between?(1, 2_147_483_647) 
    begin 
     order.contents.add(variant, quantity, options) 
    rescue ActiveRecord::RecordInvalid => e 
     error = e.record.errors.full_messages.join(", ") 
    end 

Hier ist meine Bestellung Controller populate Funktion.

# Adds a new item to the order (creating a new order if none already exists) 
def populate 
    order = current_order(create_order_if_necessary: true) 
    variant = Spree::Variant.find(params[:variant_id]) 
    quantity = params[:quantity].to_i 
    options = params[:options] || {} 

    # 2,147,483,647 is crazy. See issue #2695. 
    if quantity.between?(1, 2_147_483_647) 
    begin 
     order.contents.add(variant, quantity, options) 
    rescue ActiveRecord::RecordInvalid => e 
     error = e.record.errors.full_messages.join(", ") 
    end 
    else 
    error = Spree.t(:please_enter_reasonable_quantity) 
    end 

    if error 
    flash[:error] = error 
    redirect_back_or_default(spree.root_path) 
    else 
    respond_with(order) do |format| 
     format.html { redirect_to cart_path } 
    end 
    end 
end 

Bitte helfen Sie mir hier.

+1

Könnten Sie bitte den Stacktrace posten? Vor allem, wo passiert dieser Fehler und der Code mit der Zeilennummer, wo es passiert? – born4new

+1

Sind Sie sicher, dass 'Variante',' Menge', 'Optionen' alle Nicht-Null-Werte sind? –

+0

@AnthonyE Ich habe ein Produkt, dann Optionen als 'Größe wählen 'hinzugefügt und dann habe ich zwei Varianten für es als' 500 gms' und '750gms' hinzugefügt und ich habe ihre Menge im Lager erhöht. So möglicherweise sie nicht-Null-Wert – Suraj

Antwort

1

Sie müssen die Werte von variant, quantity und options sicherstellen, bevor Sie sie an spree senden.

Die Tatsache, dass Sie diesen Fehler erhalten, könnte als ein Fehler auf ihrer Seite betrachtet werden, da Sie eine nette Fehlermeldung erwarten würde, dass "variant ist Null" oder dergleichen.

Um Ihr Problem jedoch zu beheben, würde ich überprüfen, dass diese Werte gültig sind, bevor sie an Spree gesendet werden.

0

Für zukünftige Ansichten zu diesem Problem.

Überprüfen Sie, ob das Attribut cost_currency gleich dem in Spree konfigurierten Attribut ist. Sie können es in einem Rails-Konsole Tun überprüfen:

Spree::Config.get(:currency) 

Manchmal kommt es vor, wenn spree mit einiger Währung standardmäßig initialisiert wird, und dann wird die Standardwährung geändert.

Verwandte Themen