我对rails非常陌生,对于我正在整理学习的简单页面有一点问题,我希望有人可能会对修复或更好的方法提出一些建议。
基本上,我有一个便笺簿的概念。每个pad都有很多任务和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就像我想要的那样。
在这种情况下,适当的方法是什么?对轨道如此陌生(从昨天开始),我担心我会遗漏一些明显的东西。
编辑:我将源添加到github存储库。正如我所说,这对我来说只是一个学习项目。 https://github.com/douglinley/scratchpad
答案 0 :(得分:0)
如果您只是想要一个没有添加到@pad.tasks
集合的新任务,我相信您可以@pad.tasks.new
而不是@pad.tasks.build
(它会将其添加到集合中)。
有关build vs new的更多信息,请查看 Build vs new in Rails 3
答案 1 :(得分:0)
所以,这比我想象的容易得多。我刚刚为表单创建了一个新对象,而不是在集合上调用new。示例如下:
<%= form_for([@pad, Task.new]) do |f| %>
<%= f.text_field :text %> <%= f.submit %>
<% end %>