在视图中迭代记录并创建text_fields

时间:2013-06-18 14:24:16

标签: ruby-on-rails

我有一张桌子:family_children(模型是family_child)家里有很多孩子。

我让孩子们这样:

@family_children = @family.children

其中.children是与family_children表的关联。

在视图中,我想遍历子项,并将它们中的每一项放在text_field中。当然,当页面发布时,我需要这些字段作为参数。即我认为我应该让孩子们成为阵列。

我怎样才能做到这一点?

我的意思是,如果我要写

<%= text_field 'child', 'name' %>

我真的没有得到我需要的东西。

4 个答案:

答案 0 :(得分:1)

在你看来尝试这样的事情:

<% @family_children.each_with_index do |c, i| %>
  <%= text_field_tag "children[#{i}]", c.name %>
  <br />
<% end %>

这应该在发布之后返回params [:children],这应该是一个数组。我不确定要在文本框中显示的属性的名称,所以我假设它被称为“名称”。

答案 1 :(得分:0)

实际上,@family_children对象充当数组,因此您只需在其上调用eachmap即可。

答案 2 :(得分:0)

是否要将children的名称放在表单字段或视图中作为页面文本的一部分?你能包括视图文件吗?

答案 3 :(得分:0)

因为你想要将family_children数据发布,你需要看到嵌套属性的概念。请参阅http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.htmlhttp://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for

class Family
  has_many :children, :class => "FamilyChild"
  accepts_nested_attributes_for :children
end

class FamilyChild
  belongs_to :family
end

,表格可以是

<%= form_for @family do |p| %>
  First name: <%= p.text_field :first_name %>
  Last name : <%= p.text_field :last_name %>

  <%= fields_for @family.children do |c| %>
    <%= c.text_field :child_name %>
  <% end %>
  <%= f.submit %>
<% end %>