рельсы: fields_for и коллекция - PullRequest
       6

рельсы: fields_for и коллекция

3 голосов
/ 13 декабря 2010

Я хотел бы использовать дополнительную коллекцию для 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 = "понедельник" и task.name = "пить кофе", task.weekday_id = 1

1 Ответ

0 голосов
/ 07 марта 2011

Вы не перебираете дни недели. Вы должны сделать так:

<% @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 %>

Если у вас есть таблица 'daysdays', то значение hidden_field должно быть weekday.id

Редактировать: 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 %>
...