Различие между: модель и @model в form_for?

Что является различием между использованием 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?

6
задан Ryan 13 January 2010 в 19:27
поделиться

2 ответа

Если дать символу 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|%>.
 ...
<% конец %>
4
ответ дан 9 December 2019 в 22:35
поделиться

Если вы просто даете экземпляр модели, как @user , не указав действие (как в вашем первом примере), Rails автоматически использует соответствующее действие CRUD для вашей формы:

  • Если @user является новым, неопровесенным пользователем объект, форма будет указывать на ваше создание действий.

  • Если @USER является существующим пользователем , загруженном из базы данных, вместо этого будет использоваться обновление .

Это имеет преимущество, которое вы можете повторно использовать одну и ту же форму для обоих для редактирования , так и новых представлений без изменения : URL параметра для ваших форм.

Как обычно, документы API обеспечивают больше информации.

7
ответ дан 9 December 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: