2016-11-04 10 views
1

Я искал несколько недель, пытаясь найти пример тройных вложенных форм, которые включают в себя все компоненты, в том числе, как обрабатывать form_for с глубоко вложенной моделью. Довольно редко для Rails, но хотелось бы, чтобы кто-то мог показать пример тройного вложенного form_for для чего-то вроде Group-> Project-> Tasks, отображающего соединение с контроллером, моделью и представлением. Имея трудное время с Задачей form_for. Благодарю.Rails: пример тройных вложенных форм

ответ

0

Ну, если честно, я не рекомендую вложенности более чем на один уровень .. URLs получить выход из руки очень быстро ..

то, что вы можете рассмотреть вопрос будет:

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

, но я настоятельно рекомендую избегать глубокой вложенности маршрутов.

надеюсь, что это поможет!

+0

Спасибо, Шон. Если заданы настройки «Родители-дети» Groups-> Projects-> Tasks, что бы вы сделали, чтобы избежать глубокого вложения маршрутов, если вы строили это? Я видел статьи об избежании глубокого гнездования и неглубокой маршрутизации, пробовал пару раз, чтобы понять это, но столкнулся с некоторыми из тех же проблем form_for. Любая помощь приветствуется! Еще раз спасибо! – CAKFinn