Ruby on rails 无法在数组中传递的字段\u

Ruby on rails 无法在数组中传递的字段\u,ruby-on-rails,form-helpers,fields-for,Ruby On Rails,Form Helpers,Fields For,我试图为一部分对象和一些对象创建字段。以下是一些细节: class Club < ActiveRecord::Base has_many :shifts ... <%= form_for club, :url => shift_builders_url do |f| %> ... <% these_shifts = Shift.where(:club_id => club.id, :date => date) %> <%=

我试图为一部分对象和一些对象创建字段。以下是一些细节:

class Club < ActiveRecord::Base
  has_many :shifts
...

<%= form_for club, :url => shift_builders_url do |f| %>
...      
<% these_shifts = Shift.where(:club_id => club.id, :date => date) %>
<%= f.fields_for :shifts, these_shifts do |s| %>
  <td><%= render "shift_fields", :f => s %></td>
<% end %>
...
然后为该俱乐部的每个shift对象绘制字段。。。传入一个Arel对象似乎可以正常工作,但数组似乎不行。使用字段_仅绘制对象子集的最佳方法是什么

我已经看过了,但我不认为我能像很多人那样,在一天(日期)轮班

编辑以添加: 我正在使用MySQL在REE上运行Rails 3.0.7,请尝试替换:

<%= f.fields_for :shifts, these_shifts do |s| %>
  <td><%= render "shift_fields", :f => s %></td>
<% end %>

s%>
与:

<% for shift in these_shifts do %>
 <td><%= f.field_for :shift %></td>
<% end %>

shift|u builders|u url do|f|%>
...      
s%>
模型

class Clubdate)
结束
...
结束

我不确定,但似乎
这些移位
并不是你所期望的,然后当
fields\u for
解析参数时,它会检查那里是否有东西,如果找不到你要找的东西,就调用(:shields)在俱乐部上,就像你在做
f.fields\u for:shields,nil do |
一样。(请参阅)

这当然有效,但仍会产生大量的查询(#clubs*#days)-这是我一直在努力避免的。我暂时同意这一点,但我会看看是否有人有更好的想法……我明白了。您可以手动执行:只需在
每个循环中为
shift\u属性创建字段。仅此而已。这绘制了正确的字段,但无法正确更新它们,因为表单内容的格式有点不正确。我想我可以重写控制器代码来处理goofy表单提交:
参数:{“俱乐部”=>{“移位”=>{“开始时间(1i)”=>“2011”,“开始时间(2i)”=>“5”,“开始时间(3i)”=>“22”,“开始时间(4i)”=>“19”,“结束时间(1i)”=>“2011”,“开始时间(5i)”=>“20”,“结束时间(2i)”=>“5”,“跟随”=>“0”,“结束时间(3i)”=>“22”,“结束时间(17)”,“\u destroy”=>,“end\u time(5i)”=>“20”},“id”=>“2”}
而不是“club”=>“shift”。。。
Shift Load (7.3ms)  SELECT `shifts`.* FROM `shifts` WHERE (`shifts`.club_id = 2)
<%= f.fields_for :shifts, these_shifts do |s| %>
  <td><%= render "shift_fields", :f => s %></td>
<% end %>
<% for shift in these_shifts do %>
 <td><%= f.field_for :shift %></td>
<% end %>
<%= form_for club, :url => shift_builders_url do |f| %>
...      
<% these_shifts = club.shifts_for_date(some_date) %>
<%= f.fields_for :shifts, these_shifts do |s| %>
  <td><%= render "shift_fields", :f => s %></td>
<% end %>
class Club < AR::Base
  has_many :shifts
  ...
  def shifts_for_date(date)
    shifts.where(:date => date)
  end
  ...
end