Что является различием между использованием form_for следующий путь:
<% form_for @user do |f| %>
<%= f.label :name %>:
<%= f.text_field :name, :size => 40 %>
...
<% end %>
и:
<% form_for :user, :url => {:action => 'create'} do |f| %>
<%= f.label :name %>:
<%= f.text_field :name, :size => 40 %>
...
<% end %>
Использование @user просто автоматически используют методы CRUD для действий URL?
Если дать символу form_for
символ без переменной экземпляра, то он будет искать переменную экземпляра с тем же именем.
В документации сказано:
Например, если @post является существующей запись, которую вы хотите отредактировать
<% form_for @post do |f|%>. ... <% конец %>
эквивалентно:
<% form_for :post, @post, :url => post_path(@post), :html => { :method => :put, :class => "edit_post", :id => "edit_post_45" } do |f|%>. ... <% конец %>
Если вы просто даете экземпляр модели, как @user
, не указав действие (как в вашем первом примере), Rails автоматически использует соответствующее действие CRUD для вашей формы:
Если @user
является новым, неопровесенным пользователем
объект, форма будет указывать на ваше создание
действий.
Если @USER
является существующим пользователем
, загруженном из базы данных, вместо этого будет использоваться обновление
.
Это имеет преимущество, которое вы можете повторно использовать одну и ту же форму для обоих для редактирования
, так и новых
представлений без изменения : URL
параметра для ваших форм.