不知怎的,我下的印象是accepts_nested_attributes_for
會讓我通過家長填寫子對象:混淆accepts_nested_attributes_for
person.update_attributes person_hash
但在實踐中我終於實現了這一點:
person.address.update_attributes person_hash[:address]
person_hash.delete :address
person.update_attributes person_hash
現在,http://guides.rubyonrails.org提到僅僅間接爲accep_nested_attributes_和這個方法的API文檔也很神祕。
1)有人可以顯示accept_nested_attributes_for的基本用例嗎?我的意思是,我知道它是如何聲明的,我對它的差異感到困惑。
2)是我填充嵌套對象的方式在軌道上的'正確的',或有更多'優雅'的東西?
謝謝!
更新
模式,爲清楚起見
class Person < ActiveRecord::Base
has_one :address
accepts_nested_attributes_for :address
end
UPDATE2,對於j。
窗體聲明是這樣的
<% fields_for "people", person, :index => person.id do |person_form| %>
...
<% person_form.fields_for person.address do |address_form| %>
<%= address_form.text_field :street %>
<% end %>
...
<% end %>
但它給我的HTML的名稱,如people[66][address][street]
,而不是people[66][address_attributes][street]
不是'form_for:people'而不是'fields_for'嗎? – 2010-06-24 20:31:00
@j。不,我有幾個'人'記錄的表單聲明。總體而言,在http://guides.rubyonrails.org上的某個地方,據說fields_for與form_for的所有實際用途相同,但不會創建
我有_ <%form_tag(「url_here」,:method =>「post」,:id =>「edit_tips_form」)do%> _包含所有內容。 – 2010-06-24 20:35:31