我有什么:(在控制器中采取行动)
def create
@test = Test.new(params[:test])
@test.save
devicefiles = params[:devicefiles]
if devicefiles != nil
devicefiles.each do |attrs|
devicenote = Testdevicenote.new(attrs, :test_id => @test.id)
devicenote.save
end
end
end
此控制器操作不显示任何错误消息并且正在呈现视图,但是:test_id未保存在数据库中。我该如何解决这个问题?
答案 0 :(得分:1)
编辑:好的哎呀,我现在看到了......
模型只在初始化时使用一个哈希值,而不是2。
Testobjectnote.new(attrs.merge(:test_id => @test.id))
总之,这里没有人有任何线索,因为这还不够。我们不知道您的模型是如何设置的。
但是在调试“无法保存”的模型时,使用爆炸版save
,save!
通常会很好。 save
会返回true
或false
,告知您是否能够保存记录。但是save!
会在无法保存模型时引发异常,异常会告诉您原因。
该异常可能会告诉您为何没有保存记录。
此外,通常更好地使用关联,而不是自己管理ID。
def create
@test = Test.new(params[:test])
if params[:devicefiles]
params[:devicefiles].each do |attrs|
@test.testdevicenotes << Testdevicenotes(attrs)
end
end
@test.save
end
答案 1 :(得分:0)
很难说因为您没有使用发布到创建操作的表单发布您的视图,但如果它是典型的Rails表单,它应该看起来像:
def create
@test = Test.new(params[:test])
@test.save
devicefiles = params[:test][:devicefiles]
if devicefiles != nil
devicefiles.each do |attrs|
devicenote = Testdevicenote.new(attrs, :test_id => @test.id)
devicenote.save
end
end
objectfiles = params[:test][:objectfiles]
if objectfiles != nil
objectfiles.each do |attrs|
objectnote = Testobjectnote.new(attrs, :test_id => @test.id)
objectnote.save
end
end
end
这假定:devicefiles和:objectfiles在表单中:test