如何为2个脚手架模型创建嵌套表单?
我有一个教学大纲模型,它有许多任务。以前,创建任务的唯一方法是通过教学大纲嵌套形式(我用Railscasts制作)。昨天,我决定用户应该能够自己创建任务,所以我在跳过迁移时搭建了任务,因此它为现有的任务模型创建了所有控制器和视图。
所以这就是问题所在:我现在可以自己创建任务,但是当我尝试通过教学大纲嵌套表单创建任务时,它会给我一个错误“ undefined method`difficult'对于#< \ Mission:0xb372ffc。> “我猜它正在尝试将教学大纲属性传递给Missions属性,该属性未在Missions架构中定义。 (难度只是教学大纲的属性)。
总结一下:当我只使用模型进行任务时,嵌套表单与“构建器”一起使用,但是当我将任务组织起来以便它可以单独存在时,我无法使用嵌套表单。
因为有多个文件可能会影响这个,所以我创建了一个要点。 的 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"
}
答案 0 :(得分:0)
我最好的猜测是
中的creations
current_user.creations.build(params[:syllabus])
是指任务而非教学大纲的集合。没有完整的错误和用户模型,很难确定它。
答案 1 :(得分:0)
我想通了,但它真的很乱......我确信有更好的方法可以做到这一点,但经过几天的努力,我对这个解决方案非常满意:
@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