2010-01-13 32 views
6

şu şekilde form_for kullanma arasındaki fark nedir:Arasındaki fark: model ve @model form_for?

<% form_for @user do |f| %> 
    <%= f.label :name %>: 
    <%= f.text_field :name, :size => 40 %> 
    ... 
<% end %> 

ve:

<% form_for :user, :url => {:action => 'create'} do |f| %> 
    <%= f.label :name %>: 
    <%= f.text_field :name, :size => 40 %> 
    ... 
<% end %> 

sadece otomatik URL eylemleri için CRUD yöntemleri kullanmak @user kullanıyor mu?

+0

Kopyaları: http://stackoverflow.com/questions/1582695/ ve http://stackoverflow.com/questions/957204/ –

cevap

4

form_for örnek değişkensiz bir sembol verirseniz, aynı ada sahip bir örnek değişkeni arar.

belgelerine diyor: Örneğin

, @post düzenlemek istediğiniz varolan rekor ise

<% form_for @post do |f| %> 
    ... 
<% end %> 

gibi bir şey eşdeğerdir:

<% form_for :post, @post, :url => post_path(@post), :html => { :method => :put, :class => "edit_post", :id => "edit_post_45" } do |f| %> 
    ... 
<% end %> 
7

gibi bir model örneği verirseniz 210 (ilk örnekte olduğu gibi), bir işlem belirtilmeden, otomatik olarak raylar form için uygun bir CRUD işlemi kullanır: @user yeni, kaydedilmemiş User amacı

  • ise, form create harekete işaret edecektir.

  • @user veritabanından yüklenen varolan User ise

    , update eylem yerine kullanılacaktır.

Bu

size formlar için :url parametre değiştirmeden hem edit ve new görünümler için aynı formu yeniden kullanabilirsiniz avantajına sahiptir.

Her zamanki gibi, API docs daha fazla bilgi sağlar.

+0

Açıklamanız bana API dokümanı için çok faydalı .. +1 –