0

我有 2 个对象WeeklyactivityWeeklyfood。Weeklyactivity 具有名为food_id的属性。Weeklyfood有 7 个属性,分别称为mon, tue, ..., sun

当用户单击更新每周食物时,操作方法检索给定一周的每日活动。它还检索所有weeklyfood 对象,其中包含用户在该周的每一天吃的食物的ID 。

Weeklyactivities = Weeklyactivity.where(:week => wk)
@weeklyfood = Weeklyfood.New(forms[:weeklyfood])

现在我想遍历weeklyfood 并传输它的数据,其中包含用户一周中每天吃的食物的ID。

我不知道这是否是正确的方法,或者是否有一种编写此代码的紧凑方法。

Weeklyactivities[:day => 'mon'].food_id = @weeklyfood[:mon]
Weeklyactivities[:day => 'tue'].food_id = @weeklyfood[:tue]
//and son ...

编辑

我收到以下错误:“无法将哈希转换为整数......”

4

1 回答 1

1

不确定我是否理解这个问题。

您有一个Weeklyactivity具有属性weekday(和其他)的模型?

根据您的代码示例,您已经在数据库中创建了一周内所有天的行Weeklyactivity

现在您想从表单更新这些行吗?

在那种情况下,我有这个建议:

@weeklyfood = Weeklyfood.New(forms[:weeklyfood])
Weeklyactivity.where(:week => wk).each do |weekly_activity|
  if food_id = @weeklyfood[weekly_activity.day.to_sym]
    weekly_activity.food_id = food_id
    unless weekly_activity.save
      # do stuff if not successful
      break
    end
  end
end

而且我认为您的对象应该分别命名Weeklyactivity和使用表格和WeeklyfoodWeeklyActivityWeeklyFoodweekly_activitiesweekly_foods

于 2012-11-25T00:50:35.433 回答