Rails:2个脚手架模型的嵌套表格?

时间:2012-05-08 00:52:33

标签: ruby-on-rails ruby-on-rails-3 activerecord nested-forms nested-attributes

如何为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"
}

2 个答案:

答案 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