Ruby on rails 如何迭代对象模型的值?
我有两个对象Weeklyactivity和Weeklyfood。Weeklyactivity具有名为食物id的属性。而周食品有7种属性,分别称为周一、周二、…、太阳 当用户单击update weekly food时,action方法检索给定一周的每日活动。它还检索所有weeklyfood对象,该对象包含用户每周每天吃的食物的idRuby on rails 如何迭代对象模型的值?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有两个对象Weeklyactivity和Weeklyfood。Weeklyactivity具有名为食物id的属性。而周食品有7种属性,分别称为周一、周二、…、太阳 当用户单击update weekly food时,action方法检索给定一周的每日活动。它还检索所有weeklyfood对象,该对象包含用户每周每天吃的食物的id Weeklyactivities = Weeklyactivity.where(:week => wk) @weeklyfood = Weeklyfood.New
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 ...
编辑
我收到以下错误:“无法将哈希转换为整数…”我不确定是否理解该问题 您有一个具有属性
周
和日
的模型周活动
(以及其他)
根据您的代码示例,您已经在数据库中为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
和WeeklyFoods
,分别有表weekly\u activities
和WeeklyFoods我不仅解决了这个问题,还学到了很多东西。非常感谢。不客气,我想你也可以用稍微短一点的@weeklyfood[weekly\u activity.day]
来代替@weeklyfood[weekly\u activity.day.to\u sym]
,但我想确保它能正常工作。