0

我对 Rails 很陌生,我整理的一个简单页面有点问题,我希望有人能对修复或更好的方法提出一些建议。

本质上,我有便签本的概念。每个垫有_many 任务和has_many 笔记。在pad的展示中,我想要两个独立的表格。一种用于添加任务,一种用于添加注释。问题是,我像这样构建表单:

<%= form_for([@pad, @pad.tasks.build]) do |f| %>
    <%= f.text_field :text %> <%= f.submit %>
<% end %>

现在,因为我调用了 .build,所以当我稍后调用下面的代码来呈现任务时,它总是会在列表中呈现一个额外的空记录。

<ul>
    <%= render @pad.tasks %>
</ul>

我考虑过使用嵌套表单,但这似乎需要我使用 PadsController::Update 而不是 TasksController:Create 像我想要的那样。

在这种情况下,合适的方法是什么?对 Rails 如此陌生(昨天开始),恐怕我错过了一些明显的东西。

编辑:我将源代码添加到 github 存储库。正如我所说,这对我来说只是一个学习项目。https://github.com/douglinley/scratchpad

4

2 回答 2

0

如果您只是想要一个新任务而不将其添加到@pad.tasks集合中,我相信您可以做@pad.tasks.new而不是@pad.tasks.build(确实将其添加到集合中)。

有关 build vs new 的更多信息,请查看 Rails 3 中的 Build vs new

于 2013-07-21T17:17:35.437 回答
0

所以,这比我想象的要容易得多。我没有在集合上调用 new,而是为表单创建了一个新对象。下面的例子:

<%= form_for([@pad, Task.new]) do |f| %>
    <%= f.text_field :text %> <%= f.submit %>
<% end %>
于 2013-07-23T00:07:02.787 回答