rails:fields_for和collection

时间:2010-12-13 10:42:57

标签: ruby-on-rails ruby fields-for

我想为fields_for使用额外的集合。这个集合应该包含在fields_for中使用的所有可能性。

假设我有一个人在同一天每周定期发生任务。在个人表格中,我应该每天都有一个条目,即使还没有任何已保存的任务。我试过了:

<% form_for(@person) do |f| %>
...

  <% f.fields_for :tasks, @weekdays do |task_fields| %> 
    <%= weekday.name %>: 
    <%= project_fields.text_field :name %>
  <% end %>
<% end %>

现在每个工作日应该有一个文本字段来输入当天任务的名称。例如weekday.name =“monday”和task.name =“喝咖啡”,task.weekday_id = 1

1 个答案:

答案 0 :(得分:0)

您没有遍历week_days。你应该这样做:

<% @weekdays.each_with_index do |weekday, i| %>
  <% f.fields_for :tasks do |task_fields| %> 
    <%= weekday.name %>: 
    <%= task_fields.text_field :name %>
    <%= task_fields.hidden_field :weekday_id, :value => (i + 1) %>
  <% end %>
<% end %>

如果你有一个'工作日'表,那么hidden_​​field值应为weekday.id

编辑:7月30日

我想我完全搞砸了这个答案。让我试着改进它。

<% f.fields_for :tasks, @weekdays do |task_fields| %> 
  <%= weekday = task_fields.object %>
  <%= weekday.name %>: 
  <%= task_fields.text_field :name %>
  <%= task_fields.hidden_field :weekday_id, :value => weekday.id %>
<% end %>