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

时间:2009-08-04 15:39:32

标签: ruby-on-rails

我有一个名为'chapter'的模型(其唯一的属性是'name'和'course__id')属于“course”(以及一个课程has_many章节)。在“展示”视图中,我列出了该课程的所有章节。容易。

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

所以在我的控制器中,我添加了这个:

    @newchapter=@course.chapters.build

并且视图上的表单如下所示:

<% 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或不是这样)?

感谢, 皮尔

1 个答案:

答案 0 :(得分:0)

您不想在此使用@course.chapters.build,因为这会为课程添加一个空章节。相反,您需要使用Chapter.new并设置:course这样的选项。

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

根据您使用:course的方式,甚至可能无需在此处指定@newchapter