如何为2个脚手架模型创建嵌套表单?
我有一个教学大纲模型,它有很多任务。以前,创建任务的唯一方法是通过教学大纲嵌套形式(我用Railscasts创建的)。昨天,我决定用户应该能够自己创建任务,所以我在跳过迁移的同时搭建了任务,因此它为现有的任务模型创建了所有控制器和视图。
所以这里有个问题:我现在可以自己创建任务,但是当我试图通过教学大纲嵌套形式创建任务时,它给了我一个错误--“未定义的方法‘#<\Mission:0xb372ffc.>’困难‘--我猜它是试图将教学大纲属性传递给任务属性,而任务模式中没有定义这个属性。”(困难只是教学大纲的一个属性)。
总之:当我只有任务模型时,嵌套表单与"builder“一起工作,但是当我为任务搭建支架以便它能够单独存在时,我不能使用嵌套表单。
因为有几个文件可能会影响到这一点,所以我创建了一个gist。https://gist.github.com/2631734
顺便说一句,这些是应该传递进来的参数。
{"utf8"=>"✓",
"authenticity_token"=>"YxkzNmIJl0jBA467tdHP2zqNv22DgKrzSx+WCFgwKtk=",
"syllabus"=>
{"category"=>"Technology and Internet",
"difficulty"=>"Beginner",
"title"=>"missions testing",
"description"=>"deccrip",
"missions_attributes"=>
{"0"=>
{"_destroy"=>"false",
"title"=>"plz",
"content"=>"<p>\r\n\tdad</p>\r\n"
}
}
},
"commit"=>"Create Syllabus"
}发布于 2012-05-09 00:48:35
我想出来了,但真的很乱.我确信有更好的方法可以做到这一点,但经过几天的努力,我对这个解决方案非常满意:
@syllabus = Syllabus.new(:title => params[:syllabus][:title], :category => params[:syllabus][:category], :difficulty => params[:syllabus][:difficulty], :description => params[:syllabus][:description], :author_id => current_user)
@syllabus.save!
params[:syllabus][:missions_attributes].each do |a, b|
@mission = Mission.new(:title => b[:title], :content => b[:content], :syllabus_id => @syllabus.id, :author_id => current_user, :category => @syllabus.category)
@mission.save!
end发布于 2012-05-08 02:17:02
我最好的猜测是creations在
current_user.creations.build(params[:syllabus]) 指的是任务的集合而不是教学大纲。它的类型很难确定,没有完全的误差和用户模型。
https://stackoverflow.com/questions/10491105
复制相似问题