Вы не перебираете дни недели. Вы должны сделать так:
<% @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 %>