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