我有2个对象每周活动和每周食物。 Weeklyactivity具有称为 food_id 的属性。和 Weeklyfood 有7个属性叫做 mon,tue,...,sun 。
当用户点击更新每周食物时,操作方法会检索给定周的每日活动。它还检索所有的每周食物对象,其中包含用户每周吃的食物 id 。
Weeklyactivities = Weeklyactivity.where(:week => wk)
@weeklyfood = Weeklyfood.New(forms[:weeklyfood])
现在我想迭代每周食物并转移其数据,其中包含用户每周吃的食物的ID。
我不知道这是否是正确的方法,或者即使有一种简洁的方式来编写这段代码。
Weeklyactivities[:day => 'mon'].food_id = @weeklyfood[:mon]
Weeklyactivities[:day => 'tue'].food_id = @weeklyfood[:tue]
//and son ...
我收到以下错误:“无法将哈希转换为整数...”
答案 0 :(得分:1)
不确定我理解这个问题。
您的模型Weeklyactivity
包含week
和day
(和其他)属性?
根据您的代码示例,您已经在数据库中为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
和Weeklyfood
应分别命名为WeeklyActivity
和WeeklyFood
,表格分别为weekly_activities
和weekly_foods