0

如何为 2 个脚手架模型创建嵌套表单?

我有一个教学大纲模型,其中包含许多任务。以前,创建任务的唯一方法是通过 Syllabus 嵌套表单(我使用 Railscasts 制作的)。昨天,我决定用户应该能够自己创建任务,所以我在跳过迁移的同时搭建了任务,因此它为现有任务模型创建了所有控制器和视图。

所以问题来了:我现在可以自己创建任务,但是当我尝试通过教学大纲嵌套表单创建任务时,它给了我一个错误“未定义的方法 `difficulty' for #<\Mission:0xb372ffc.> ”猜测它正在尝试将 Syllabus 属性传递给 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"
}
4

2 回答 2

0

我最好的猜测creations

current_user.creations.build(params[:syllabus]) 

指的是任务的集合而不是教学大纲。如果没有完整的错误和用户模型,它很难确定。

于 2012-05-08T02:17:02.463 回答
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
于 2012-05-09T00:48:35.047 回答