如何列出模型的实例并使表单在同一视图上创建实例?

问题描述:

我有一个名为'chapter'(其唯一属性是'name'和'course__id')的模型,属于“课程”(和课程has_many章节)。在“展示”视图的课程中,我列出了该课程的所有章节。简单。如何列出模型的实例并使表单在同一视图上创建实例?

我想在列表末尾添加一个表单,以便用户可以轻松创建新章节。在我的控制器

所以,我添加了这一点:

@[email protected] 

和视图的形式如下:

<% form_for([@course,@newchapter]) do |c| -%> 
    <%= c.label :name, "New Chapter" %>: <%= c.text_field :name %> 
    <%= c.submit 'Create' %> 
<% end %> 

(为清楚起见:这是外@ course.chapters.each块)

现在,问题是,@ course.chapters.size是实际的章节数+我在控制器中创建的空的。

有没有办法循环除最后一个(空)的所有@ course.chapters?还是有更好的做法(即不创建@newchapter或不这样)?

感谢, 皮埃尔

你不想使用@course.chapters.build这里,因为这确实增加了一个空章的过程。相反,您需要使用Chapter.new并设置:course选项。

@newchapter = Chapter.new(:course => @course) 

它甚至可能没有必要在这里指定:course取决于你如何使用@newchapter

+0

非常感谢您的快速帮助! :课程确实不是必需的。我确信我尝试过,所以必须出现错误。 – Pierre 2009-08-04 15:59:26