2012-04-03 9 views
1

Ich bin neu in Rails 3 und bin mit etwas fest, denke ich, ist einfach zu lösen. Ich wurde im Anschluss an die Beispiele von Kopf bis Fuß: Rails aber kam zu dem Schluss, dass sie Schienen 2.Schienen: form_for Routen wird keine gute Form

Ich machte einen html.erb-Datei wie folgt verwenden:

<h1>New user</h1> 
<% form_for(@user, :url=>{:action=>'create'}) do |f| %> 
    <p>Fullname: <%= f.text_field :fullname%></p> 
    <p>Username: <%= f.text_field :username%></p> 
    <p>Email: <%= f.text_field :email%></p> 
    <p>Password: <%= f.text_field :password%></p> 
    <p><%= f.submit "Create" %></p> 
<% end %> 

und ich möchte, dies zeigen Form angezeigt, wenn ich zu http://localhost:3000/users/new gehen so habe ich eine Route wie folgt aus:

resources :users 
match "users/new" => "users#new" 
match "users/create" => "users#create" 

wenn ich an die Adresse gehen, zeigen, es ist eine Webseite mit einem H1-Header: Neuer Benutzer, aber es zeigt nicht, irgendeines der anderen Dinge.

Was habe ich vergessen?

Antwort

5

resources :users enthält bereits

match "users/new" => "users#new" 
match "users/create" => "users#create" 

So können Sie sicher entfernen verwenden müssen. Das Formular wird nicht angezeigt, denn wenn Sie das Ergebnis des Ausführungs-Ruby-Codes anzeigen möchten, sollten Sie folgende Konstruktion verwenden: <%= %>. <% %> steht für nur Codeausführung, nicht für die Anzeige.

So sollte die neue Ansicht wie diese

<h1>New user</h1> 
<%= form_for(@user, :url=>{:action=>'create'}) do |f| %> 
    <p>Fullname: <%= f.text_field :fullname%></p> 
    <p>Username: <%= f.text_field :username%></p> 
    <p>Email: <%= f.text_field :email%></p> 
    <p>Password: <%= f.text_field :password%></p> 
    <p><%= f.submit "Create" %></p> 
<% end %> 
sein