2010-12-09 15 views
0

ich diesen Code in meiner Anwendung verwenden \ Ansichten \ Seiten \ home.html.erb DateiRender-Vorlage mit Teil

<%= render :template => 'users/new' %> 

ich diesen Code in meiner Anwendung verwenden \ Ansichten \ users \ new.html.erb Datei

<%= render :partial => 'users/form' %> 

Anzeigen der "Home Page" ich bekomme diese Fehlermeldung:

NoMethodError in Pages # Hause

nicht definierte Methode `model_name‘ für NilClass: Klasse

Extrahiert Quelle (um Zeile # 1):

1: <% = form_for (@user) tun | f | %>

2: <% if @ user.errors.any? %>

...

Ich las this, aber es funktioniert nicht. Was kann ich tun, um Vorlage mit "sub-partially" richtig zu rendern?

Antwort

1

In Ihrem PagesController # Hause() -Methode, die Sie benötigen @user einstellen - wahrscheinlich mit:

@user = User.new 
+0

Danke, es funktioniert. Ich habe festgestellt, dass Sie dasselbe mit: <% = render: template => 'users/new',: objekt => @user = User.new%> in der Datei home.html.erb machen können. – user502052

+0

Ja - es ist im Allgemeinen sauberer, Ihre Objekte in Ihren Controllern zu erstellen als Ihre Ansichten. – Nate

+1

Partials sind mehr wiederverwendbar, wenn Sie nicht mit Instanzvariablen arbeiten, also wäre sogar sauberer "<% = render" -Formular ",: user => @user%>' und im partiellen etwas wie '<% = form_for user do | f | %> '(nicht mit dem ivar) – iain