2013-08-26 75 views
5

進出口使用simple_form寶石,我需要做的嵌套形式,但這裏有麻煩IM是一些代碼:軌嵌套的模型形式HAS_ONE協會

我有兩個型號:

Apiphones:

class Apiphone < ActiveRecord::Base 
    attr_accessible :key, :phone 
    validates_presence_of :phone 
    belongs_to :store 
end 

商店:

class Store < ActiveRecord::Base 
    has_one :apiphone 
    accepts_nested_attributes_for :apiphone 
end 

在我看來:

<%= simple_form_for [@group,@store] do |f| %> 
    <%= f.simple_fields_for :apiphone do |ph| %> 
     <%= ph.input :phone %> 
    <% end %> 
<% end %> 

但沒有任何顯示,任何想法?

回答

20

使用fields_foraccepts_nested_attributes結合假定的記錄被初始化。這意味着,在生成表單時,使用您的模型,@store.apiphone不應該是nil。解決此問題的方法是確保apiphone已初始化並與@store(包括新操作和編輯操作)相關聯。

def new 
    @store = Store.new 
    @store.build_apiphone 
end 
+0

謝謝!這固定它,你的男人:) –

+0

非常感謝!困惑了很久 –

3

我想你忘記了在你的控制器建立apiphone,例如:

def new 
... 
@store.build_apiphone 
... 
end 
+2

我不確定這個,但'.build'用於'has_many'。因爲這是'has_one',所以你需要使用'build_apiphone' – jvnill

+0

你是對的我更新了我的答案,謝謝;) – zolter