2012-06-19 3 views
0

По какой-то причине я не могу понять, почему вложенные элементы не отображаются в этой форме редактирования.Вложенные модели в форме не отображаются

class Book < ActiveRecord::Base 
    has_many :pages 
    accepts_nested_attributes_for :pages 
end 

class Page < ActiveRecord::Base 
    belongs_to :book 
end 

Heres форма

<%= form_for(:book) do |f| %> 
    <p><%= f.text_field(:title) %></p> 
    <%= f.fields_for :pages do |page| %> 
    <p><%= page.text_field(:page_no) %></p> 
    <% end %> 
<% end %> 

Контроллер

def edit 
    @book = Book.find(params[:id]) 
end 

Он отображает название книги, но ничего не появляется, когда он идет в список page_no с. Также я попытался позвонить :pages и он возвращает массив страниц, поэтому я не понимаю, почему форма не строится.

Я пропустил что-то в модели, которую мне нужно изменить?

+0

Можете вы добавить свой код контроллера? – zsquare

+0

добавить код контроллера и изменить 'принадлежит_to: book' вместо' принадлежит_то: Книга' – hyperrjas

+0

Я добавил контроллер для этого вида – user827570

ответ

0

Попробуйте с

<%= form_for(@book) do |f| %> 

вместо

<%= form_for(:book) do |f| %> 
+0

Я получаю его ошибку undefined method 'book_path ' – user827570

+1

У вас есть« ресурсы: книги »на ваших маршрутах? (Это еще одна проблема) –

+0

, что на самом деле сделал трюк, у меня не было его в ресурсах. – user827570

0

Вы можете добавить

attr_accessible :pages_attributes 

модели Book

-1

Попробуйте использовать построить.

def edit 
    @book = Book.find(params[:id]) 
    @book.pages.build 
end 
Смежные вопросы