从Rails表单中获取数组

我需要为account资源设计一个表单。 在那种forms中,我需要在属性称为relationshipsparams散列中收集一些id作为数组。

所以来自POST请求的最终params[account]哈希应该是这样的:

 {:name => 'somename', :relationships => ["123", "23", "23445"]} 

我该如何设计form_for字段? 我尝试了这个,但没有奏效:

     p.id %> 

@eligible_parents的元素数量每次都不同。

relationships既不是关联,也不是account模型中的属性。

我必须使用虚拟属性,但我需要从表单填写一个数组。

请帮忙。 我怎样才能做到这一点?

您仍然需要在视图中使用fields_for ,只需使用:relationships作为record_name然后提供一个对象。

 <%= form_for @account do |f| %> <%= f.text_field :name %> <% fields_for :relationships, @eligible_parents do |p| %> <%= p.check_box "relationships", nil, :value => p.object.id %> <%= p.object.name %>
<% end %> <%= f.submit "Submit" %> <% end %>

这里的文档: ActionView :: Helpers :: FormHelper

我发现这是最干净的方式……

如果您正在处理直接数据并希望在不使用任何@objects的情况下发回数组:

 <%= form_for :team do |t| %> <%= t.fields_for 'people[]', [] do |p| %> First Name: <%= p.text_field :first_name %> Last Name: <%= p.text_field :last_name %> <% end %> <% end %> 

你的params数据应该像这样返回:

 "team" => { "people" => [ {"first_name" => "Michael", "last_name" => "Jordan"}, {"first_name" => "Steve", "last_name" => "Jobs"}, {"first_name" => "Barack", "last_name" => "Obama"} ] } 

如果要发送值数组,只需在名称属性中使用[]。在您的情况下,只需使用

 <%= f.check_box "relationships", {}, :value => p.id, :name => "relationships[]" %>