2016-11-04 105 views
1

我已经环顾了几个星期,试图找到一个包含所有组件的三重嵌套窗体的示例,其中包括如何使用深度嵌套模型处理form_for。相当新的Rails,但会爱如果有人可以展示一个三重嵌套form_for的例子像Group-> Project-> Tasks,显示控制器,模型和视图连接。在任务form_for中遇到困难。谢谢。Rails:三重嵌套窗体示例

回答

0

嗯,说实话,我不建议嵌套多个级别深..网址获取方式不可收拾真的很快..

东西,你可能要考虑是:

resources :groups do 
    resources :projects, except: [:index], controller: 'groups/projects 
end 

resources :projects, except: [:index], controller: 'groups/projects do 
    resources :tasks, except: [:index], controller: projects/tasks 
end 

那么你的控制器看起来像:

class Groups::ProjectsController < ApplicationController 

end 

class Projects::TasksController < ApplicationController 

end 

,你将不得不在控制器的文件夹中创建以下目录:

groups(folder) => projects_controller.rb 
projects(folder) => tasks_controller.rb 

然后在views目录中,你会做同样的事情,并将视图嵌套到它们各自的父级。

在表单中,你会做这样的事情

form_for(@group) do |f| 
form_for(@group, @project) do |f| 
form_for(@project, @task) do |f| 

这是一个梦幻般的链接http://guides.rubyonrails.org/routing.html

,但我强烈建议您避免路线的深层嵌套。

希望这有助于!

+0

谢谢,肖恩。鉴于组织 - >项目 - >任务亲子关系,如果您正在构建这个项目,您将如何避免深度嵌套路线?我曾看过有关避免深层嵌套和浅层路由的文章,尝试了几次才解决问题,但遇到了一些相同的form_for问题。任何帮助表示赞赏!再次感谢! – CAKFinn