2015-10-07 3 views
1

У меня есть две модели в моем приложении: «WorkPost» и «Contacts».Rails 4.0 вложенные формы объектов не отображаются

WorkPost

class WorkPost < ActiveRecord::Base 
    has_one :contacts 
end 

Контакты

class Contacts < ActiveRecord::Base 
    belongs_to :work_post 
end 

В new методе моего контроллера я:

def new 
    @work_post = WorkPost.new 
    @work_post.contacts 
end 

И в виду создать форму:

<%= form_for(@work_post) do |f| %> 
<div class="field"> 
<%= f.label 'Vacation' %><br> 
<%= f.text_field :post_title, :placeholder => 'Vacation here' %> 
</div> 
<div class="field"> 
    <%= f.label 'Vacation description' %><br> 
<%= f.text_area :post_body, :placeholder => 'Vacation description here' %> 
</div> 
    <% f.fields_for :contacts do |cf| %> 
    <div class="field"> 
    <%= cf.label 'Email' %><br> 
    <%= cf.text_field :emails, :placeholder => 'Email here' %> 
    </div> 
    <% end %> 
<div class="actions"> 
<%= f.submit "Post vacation", :class => 'btn_act' %> 
</div> 
<% end %> 

Но, похоже, линия <% f.fields_for :contacts do |cf| %> не работает. Все сделано отлично, но поле электронной почты. Что я делаю неправильно?

ответ

1

Проблема с этой линией

<% f.fields_for :contacts do |cf| %> 

, который должен быть

<%= f.fields_for :contact do |cf| %> 

Кроме того, class name для model и association name для has_one/belongs_to должна быть единственным числа.

#work_post.rb 
class WorkPost < ActiveRecord::Base 
    has_one :contact #should be singular 
end 

#contact.rb 
class Contact < ActiveRecord::Base #should be singular 
    belongs_to :work_post 
end 

Кроме того, Обратите внимание на изменение :contacts к :contact, как это has_one ассоциация.

Update:

Кроме того, попробуйте ниже изменения

Включите accepts_nested_attributes_for :contact в work_post.rb модель

#work_post.rb 
class WorkPost < ActiveRecord::Base 
    has_one :contact 
    accepts_nested_attributes_for :contact 
end 

Изменение new метод ниже

def new 
    @work_post = WorkPost.new 
    @work_post.build_contact 
end 
+0

Я делал все, как вы сказали, но все же ничего не делал :( – vendettacore

+0

@vendettacore У вас возникли какие-либо ошибки? – Pavan

+0

@vendettacore Попробуйте обновленные предложения. – Pavan

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