2013-08-26 4 views
5

Im используя simple_form камня, и мне нужно сделать вложенную форму, но им возникают проблемы здесь некоторый код:рельсам вложенной модели формы 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_for в сочетании с accepts_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

Смежные вопросы