ich in meinem Aufträge/edit.html.erb eine Form haben, die wie folgt beginnt:Rails nicht definierte Methode 'model_name' für nil: NilClass mit verschachtelten Attributen
<%= simple_form_for [@reservation, @order] do |f| %>
Orders Controller:
def edit
@reservation = Reservation.find_by_id(params[:reservation_id])
@order = Order.find_by_id(params[:id])
end
Verband:
Reservation :has_one
Bestellen
Routen:
resources :reservations do
resources :orders
end
Wenn mein Weg ähnelt etwas wie /reservations/10/orders/10/edit
ich einen Fehler von Rails am Ende immer sagen NoMethodError in Orders#edit
und undefined method 'model_name' for nil:NilClass
Wenn ich eine neue Ordnung der Form perfekt funktioniert schaffen gut, also nicht sicher, warum ich plötzlich einen Fehler bekomme, kann mir jemand mit diesem Problem helfen?
Ändern Sie 'find_by_id' zu' finden' ... könnte falsch sein, aber meine Vermutung ist, dass die Zeile nicht existiert; Wenn ja, wird 'find' explodieren (richtig, da Sie in diesem Fall sowieso nicht fortfahren wollen); 'find_by_id' wird die Dinge auf 'null' setzen, was irgendwo auf dem Weg nicht-deterministisch explodiert. – GoGoCarl
Das hat definitiv funktioniert, antworten Sie bitte unten, damit ich es als Lösung markieren kann! vielen Dank! Übrigens, gibt es eine Möglichkeit, dass find_by_id "explodiert", damit ich den gleichen Fehler bekomme? @GoGoCarl – ayounis90
Danke. Details zu Ihrer zweiten Frage finden Sie weiter unten. 'find_by_id' wird niemals explodieren, es gibt immer 'nil' zurück, wenn der Datensatz nicht gefunden wird. Aber Sie können diesen Fall manuell behandeln. – GoGoCarl