2013-08-26 47 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