基于Rails中的关联构建表单

时间:2013-07-21 17:07:42

标签: ruby-on-rails forms associations ruby-on-rails-4

我对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

2 个答案:

答案 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 %>