Дважды вложенная форма ресурса_Для выпуска - PullRequest
1 голос
/ 12 июня 2011

У меня есть двойной вложенный ресурс:

 resources :companies do 
    resources :orders do
      resources :comments
  end
 end

У меня возникли проблемы при попытке добавить форму для создания комментария в представление моего заказа.Это то, что я пробовал:

<%= form_for([@order, @order.comments.build]) do |f| %>

Однако это не дает мне ошибки метода.

Любой шанс, что вы можете порекомендовать лучший способ справиться с этим.

1 Ответ

3 голосов
/ 12 июня 2011

Вы также должны определить компанию. Если вы напишите rake routes, вы увидите, что у вас нет order_comments_path из-за его двойного вложения, поэтому вы увидите что-то вроде company_order_commments_path, которое принимает минимум два параметра: company_id и order_id. Поэтому, если вы действительно хотите использовать этот трехуровневый ресурс nester, вам нужно добавить переменную @company в путь формы. Как:

<%= form_for([@company, @order, @order.comments.build] do |f| %>

Но в большинстве случаев бесполезно определять и company, и order, чтобы идентифицировать order, поэтому другой вариант, который может быть лучше добавить отдельно другой маршрут для orders и comments, и это имеет смысл. В твои маршруты.рб

...
resources :orders do
   resources :comments
end
...

Таким образом, вы можете манипулировать orders без указания company. Также в самых общих случаях вы не получаете какого-либо важного преимущества, определяя вложенные маршруты 3 уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...