В моем приложении есть контроллер «ролей учетных записей» (для моей модели AccountRole), использующий представления, сгенерированные стандартным генератором скаффолдов. Этот контроллер вложен в мой контроллер «учетных записей» (для моей модели «Учетная запись»), используя следующую конфигурацию маршрутизации:
resources :accounts do
resources :people, :controller => :account_roles
end
Это приводит к таким помощникам маршрутизации, как account_people_path
(/accounts/1/people
) и account_person_path
(/accounts/1/person/1
). Все хорошо.
Моя проблема возникает при частичной генерации _form.html.erb
по умолчанию. Этот файл выглядит так:
<%= form_for([@account,@account_role]) do |f| %>
<!-- Rest of form -->
<% end %>
Я настроил это представление для работы с вложенными ресурсами, но использование опции :controller
в моей маршрутизации вызывает у меня проблемы, я думаю.
Моя спецификация представления для представлений «новый» и «редактировать» (оба из которых используют эту часть) приводит к следующей ошибке:
ActionView::Template::Error:
undefined method `account_account_role_path' for #<#<Class:0x105334360>:0x105300c18>
Я думаю , что здесь происходит, так это то, что form_for пытается «угадать» помощника маршрута для этих ресурсов. Я знаю, что мог бы переопределить URL-адрес, используя опцию :url
для form_for, но это похоже на отрыв.
Мне не хватает очевидного решения, позволяющего мне объединить опцию: controller routing с form_for
ресурсно-ориентированным стилем?