2011-04-09 121 views
1

accommodation型號:Rails 3箇中嵌套的表格將無法正常工作

class Accommodation < ActiveRecord::Base 
... 
    has_one :address 
... 
    accepts_nested_attributes_for :address 
... 

end 

address型號:

class Address < ActiveRecord::Base 
    belongs_to :accommodation 
end 

accommodation _form.html.haml部分

=form_for [:panel,@accommodation], :html => {:class=>'accommodation'} do |f| 
    %fieldset 
    %legend 
     Adres 
    =f.fields_for :address do |address_f| 
     =address_f.label :street, "Ulica" 
     =address_f.text_field :street 

    %div 

問題是街上的字段不顯示。它會顯示我何時更改:地址爲@ accommodation.build_address,但表單不被接受。
如何正確地工作?

+0

什麼做你'new'和'在你的控制器樣子edit'行動? – 2011-04-09 10:05:00

+0

你是什麼意思'表單不被接受? – fl00r 2011-04-09 13:38:02

+0

有些錯誤,現在不記得了。 – methyl 2011-04-09 15:29:34

回答

0

找到了解決辦法:
fields_for需要看起來像這樣:
=f.fields_for :address_attributes, @accommodation.address do |address_f|
現在的作品完美。

+0

你知道它是有效的,但每次當你試圖編輯'住宿'時,它都會創建新的'地址',其中有'accomotions_id' null,所以我也在尋找正確的解決方案 – 2011-04-30 04:26:04

0

嘗試

=f.fields_for :address, @accomodation.address.new do |address_f| 
+0

與我的解決方案相比有什麼優點? – methyl 2011-04-09 15:29:18