出于某种原因,我无法弄清楚为什么嵌套元素没有出现在这个编辑表单中。
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
并返回一个页面数组,所以我不明白为什么表单没有被构建。
我是否会忽略模型中需要更改的内容?
答案 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