表单中的嵌套模型未显示

时间:2012-06-19 07:20:31

标签: ruby-on-rails nested-forms

出于某种原因,我无法弄清楚为什么嵌套元素没有出现在这个编辑表单中。

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

class Page < ActiveRecord::Base
  belongs_to :book
end

继承表格

<%= 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并返回一个页面数组,所以我不明白为什么表单没有被构建。

我是否会忽略模型中需要更改的内容?

3 个答案:

答案 0 :(得分:0)

您可能需要添加

attr_accessible :pages_attributes 

到Book模型

答案 1 :(得分:0)

尝试

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

而不是

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

答案 2 :(得分:-1)

尝试使用build。

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