【问题标题】:Rails: Triple nested forms exampleRails:三重嵌套表单示例
【发布时间】:2017-03-18 11:39:41
【问题描述】:

我已经环顾数周试图找到一个包含所有组件的三重嵌套表单的示例,包括如何使用深度嵌套模型处理 form_for。对 Rails 来说相当新,但如果有人可以发布一个三重嵌套 form_for 的示例,例如 Group->Project->Tasks,显示控制器、模型和视图连接,我会很高兴。在任务 form_for 上遇到困难。谢谢。

【问题讨论】:

    标签: ruby-on-rails nested-forms form-for nested-resources


    【解决方案1】:

    好吧,老实说,我不建议嵌套超过一层。网址很快就会失控。

    您可能需要考虑的是:

    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
    

    然后在视图目录中,您将执行相同的操作并将视图嵌套到它们各自的父级。

    在你的表单中,你会做类似的事情

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

    这是一个很棒的链接http://guides.rubyonrails.org/routing.html

    但我强烈建议您避免深度嵌套路由。

    希望这会有所帮助!

    【讨论】:

    • 谢谢,肖恩。鉴于 Groups->Projects->Tasks 父子设置,如果您正在构建它,您将如何避免深度嵌套路由?我看过关于避免深度嵌套和浅层路由的文章,已经尝试了几次以使其正确,但遇到了一些相同的 form_for 问题。任何帮助表示赞赏!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多