我在这样的rails控制器中创建了一个循环:
def create
@day = current_user.days.build(day_params)
id = @day.tasks.first.id
begin
id = id + 1
end until id = @day.tasks.id
@day.save
...
end
当代码到达id = id + 1
时,它失败并且我收到错误:
未定义的方法`+'代表nil:NilClass
我不知道为什么这不起作用...... 可能存在问题,因为它是嵌套模型吗?
答案 0 :(得分:3)
因为id
之前没有宣布过。
这样做:
id = 0
begin
id = id + 1
end until ...
为变量分配一个整数(在本例中为id
)后,它变为Integer
类型,然后允许您以这种方式递增
<强>更新强>
看到您对问题的修改后,问题是因为id
仍为空白。
在您实际创建记录之前,不会分配记录的id
。使用build
将不会生成ID,因为它尚未添加到数据库中。