多模型表单,使用build将新表单放在列表顶部

时间:2013-01-08 15:52:46

标签: ruby-on-rails ruby-on-rails-3

所以Im following the rails guide,我创建了一个嵌套的记录表单,huzzah,但我想知道如何让新表单出现在列表的顶部而不是底部。现在,每次我提交表单时,嵌套模型的新空白表单都会放在列表的底部。如何让它出现在顶部?

编辑代码基本上与:

相同
<% @post.tags.build %>
<%= form_for(@post) do |post_form| %>
  field 1
  field 2
  field 3
...
  <%= form.fields_for :tags do |tag_form| %>
       ...
       ...
    <%end %>
<%end %>

产生了

 Post Field 1
   Post Field 2
   Post Field 3

    TAGS
      previously created record 1
      previously created record 2
      previously created record 3
      ...
      Blank form!

但我希望我的嵌套看起来像:

 Post Field 1
       Post Field 2
       Post Field 3

        TAGS
          Blank form!
          previously created record 1
          previously created record 2
          previously created record 3
          ...

1 个答案:

答案 0 :(得分:0)

这是一个假设,但我相信这是因为@post.tags.build将在当前存储的记录的末尾添加新记录。你可以这样做:

<% tags = [@post.tags.build] << @post.tags %>
[...]
<%= form.fields_for :tags, tags do |tag_form| %>
    [...]

这种方式fields_for使用修改过的数组,我们在其中放置了新标记。

注意:我没有测试过这个,所以我为任何错误道歉。我还删除了不需要更改的部分。