Rails: маршруты form_for не будут отображать хорошую форму - PullRequest
1 голос
/ 03 апреля 2012

Я новичок в Rails 3 и застрял в чем-то, что, я думаю, легко решить.Я следовал примерам из Head First: Rails, но пришел к выводу, что они используют rails 2.

Я сделал файл html.erb следующим образом:

<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 %>

и я хочучтобы показать, что эта форма отображается, когда я иду на http://localhost:3000/users/new, поэтому я добавил маршрут, подобный этому:

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

Когда я иду по адресу, он показывает веб-страницу с заголовком H1: Новый пользователь, но он не показывает ничего другого.

Что я забыл?

Ответы [ 2 ]

5 голосов
/ 03 апреля 2012

resources :users уже содержит

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

Так что вы можете безопасно удалить их. Форма не отображается, потому что, если вы хотите отобразить результат кода ruby ​​исключения, вы должны использовать следующую конструкцию <%= %>. <% %> означает только выполнение кода, но не отображение.

Так что ваш новый взгляд должен быть таким

<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 %>
2 голосов
/ 03 апреля 2012

В рельсах 3 нужно использовать <%= form_for

form_for

...