當我保存一個新的挑戰時,該代碼會執行,然後循環遍歷所有關聯的用戶併爲挑戰中的每一天創建數據點。Rails嵌套。每個不能訪問頂級變量
羣組和數據點在此函數中保存得很好,但第一個循環的|user|
變量在嵌套循環中不起作用。所以當Datapoints得到保存時,他們都缺少:user_id
。
我很確定我只是缺少一些關於範圍,或可能是.each
和.each_with_index
行爲的不同方式,但我似乎無法弄清楚問題所在。
控制器片段:
# loop through all associated users
@user_list.each do |user|
# create join
cohort = Cohort.new(:user_id => user, :challenge_id => @challenge.id)
if cohort.valid?
cohort.save
else
@errors += cohort.errors
end
# for each date in range create an empty Datapoint
date_range.each_with_index do |day, index|
day_count = index + 1
datapoint = Datapoint.new(:user_id => user, :challenge_id => @challenge.id, :date => day, :day => day_count)
if datapoint.valid?
datapoint.save
else
@errors += datapoint.errors
end
end
end
在哪裏以及如何定義'date_range'? –
另外,你有沒有嘗試在Datapoint.new(:user_id => user,:challenge_id => @ challenge.id,:date => day,:day => day_count)中爲用戶添加'.id'。 '? –
@JamesMilani就是這樣。謝謝! – kbpeterson