2009-05-27 7 views
0

Ist es in Ordnung, ein Objekt in einer Ansicht zu instanziieren, bevor es an einen Teil übergeben wird?Ok, um ein Objekt in der Ansicht zu instanziieren?

<%= render :partial => "trade_new", :locals => {:trade=>Trade.new("e", "b") } %> 

Oder ist besser alle Objekte im Controller als Instanzvariablen instanziiert:

@trade = Trade.new("e", "b") 

und dann die Instanz-Variable auf eine teilweise wie dies in der Ansicht übergeben:

<%= render :partial => "trade_new", :locals => {:trade => @trade } %> 

Meine Vermutung ist, dass es besser ist, neue Objekte im Controller zu instanziieren, um eine Duplizierung zu vermeiden - wie in einem Fall, in dem mehrere Vorlagen dieses neue Objekt möglicherweise an einen Teil der gleichen Aktion übergeben müssen.

Antwort

2

Erstens ist es in Ordnung, ein Objekt in der Ansicht zu instanziieren. Nichts wird wahrscheinlich in deinem Gesicht explodieren. Dann vermissen Sie jedoch den ganzen Vorteil der Aufteilung Ihrer Architektur in Ebenen.

Es ist besser, das Objekt in der Steuerung zu instanziieren. Einige der Gründe sind - bessere Wiederverwendung, viel einfacheres Testen, besseres Design wegen der Entkopplung.

Siehe die Artikel auf Präsentationsmuster here.

+1

Ja, nichts wird passieren, nur weil Sie in der Ansicht instanziieren, aber es ist normalerweise kein gutes Design :) – workmad3

+0

Meine persönliche Ausnahme zu dieser Regel ist, wenn ich ein leeres Objekt instanziieren muss, um ein Formular zu übergeben , oder um eine Reihe von Objekten zu greifen, um eine Auswahlbox mit anzuzeigen. Ich mache beide in der Ansicht (oder einen Helfer für Letzteres), ohne einen einzigen MVC-Riss zu vergießen. –

Verwandte Themen