Rails多模型表单,其数据具有包含哈希的哈希

时间:2010-11-23 17:16:36

标签: ruby-on-rails forms hash

我在rails中面临以下问题。我有一个表单来编辑/创建一个新项目,该项目可能包含1到n个子项目,这些子项目可以包含1到n个任务。

因此,当我创建一个新项目时,控制器执行:

@project = Project.new
sub_project = SubProject.new
work = Work.new
sub_project.works << work
@project.sub_projects << sub_project

拥有基本结构我在视图中生成输入字段,我构建的表单如下:

项目

<% form_for (:project, :url => action_parameter, :id => project) do |form| %>

子项目

<% fields_for "project[sub_projects][]", sub_project do |subproject_form| %>

到目前为止一切顺利,但我现在如何为任务定义fields_?以下尝试..

<% fields_for "project[sub_projects][works][]", work do |work_form| %>

..不是解决方案,因为我从Mongrel得到以下错误:

  

参数的冲突类型   容器。期待一个实例   哈希,但发现了一个Array实例。   这可能是由传递Array引起的   和基于哈希的参数   适量[] =值安培;适量[键] =值

为什么这不起作用?我应该如何解决我的问题?

2 个答案:

答案 0 :(得分:1)

您需要使用嵌套的模型表单。查看Ryan Bates的this web cast

答案 1 :(得分:1)

我的代码不起作用的原因是我忘了在工作行中添加一些额外的括号..

<% fields_for "project[sub_projects][][works][]", work do |work_form| %>

然而,我试图做的事情似乎不适用于预Rails 2.3.X.所以我将我的应用程序更新到该版本,然后使用John Drummond建议的嵌套表单。