2016-08-23 2 views
1

Ich erhalte einen Fehler Stack-Überlaufes, wenn eine Aufzeichnung zu löschen:SystemStackError (Stack-Ebene zu tief), wenn eine Aufzeichnung zu löschen

SystemStackError (stack level too deep): app/controllers/orders_controller.rb:18:in `destroy'

ich einen anderen System-Stack Fehler gefunden Rubin verwendet, aber ich nicht komplett habe wie man es beheben kann, da mein Problem etwas anders ist.

Es ist hier: Ruby, stack level too deep (SystemStackError)

Dies ist die Methode, und die zweite Zeile verursacht den Fehler:

def destroy 
@order = Order.find(params[:id]).destroy 
flash.now[:success] = true 
flash.now[:success_title] = "¡Orden eliminada!" 
flash.now[:succes_message] = "La orden #{@order.id} fue eliminada." 
respond_to do |format| 
    format.html {redirect_to orders_path} 
    format.js {} 
end 

Was kann ich ändern, um dieses Problem zu beheben?

+0

Welche Zeile ist 18? Wir können nicht von dem Code unterscheiden, den Sie gepostet haben, da es nur die einzige Aktion ist. Können Sie die gesamte Datei veröffentlichen? – kcdragon

+0

Hat eine Ihrer Assoziationen "abhängig:: destroy"? Dies wird auch einen Stapel zu tief Fehler verursachen. – codyeatworld

+0

@kcdragon Linie 18 ist def zerstören –

Antwort

3

Der Stapel zu tief Fehler tritt auf, wenn Sie versuchen, einen Datensatz mit Beziehungen zu löschen, die dependent: :destroy miteinander verknüpfen zurückgeben.

Beispiel:

class Order < ActiveRecord::Base 
    has_many :items, dependent: :destroy 
end 

class Item < ActiveRecord::Base 
    belongs_to :order, dependent: :destroy 
end 

dependent: :destroy aus dem Artikel assocation Entfernen sollte den Kreis Fehler/Stack-Ebene zu tief lösen.

Verwandte Themen