Учитывая Rails 4.1, два контроллера CRM::CompaniesController
и CRM::ContactPeople
, две модели CRM::Company
и CRM::ContactPerson
и следующие маршруты:
namespace :crm do
resources :companies do
resources :contact_people
end
end
Сгенерированные помощники URL содержат пространство имен CRM только один раз, и это именно то, что я хочу:
crm_company_contact_people GET /crm/companies/:company_id/contact_people(.:format)
new_crm_company_contact_person GET /crm/companies/:company_id/contact_people/new(.:format)
# ...
Однако использование подхода Array для помощников URL
= form_for([@crm_company, @crm_contact_person]) do |f|
пытается сгенерировать URL-адрес с каждым ресурсом в пространстве имен:
undefined method `crm_company_crm_contact_people_path' for #<#<Class...
Я хотел бы иметь «crm» в своих путях только один раз в начале (если это не нарушает общий подход Rails), и было бы некрасиво явно добавлять URL-адрес в каждую форму. Есть ли что-то, что я могу сделать (возможно, в маршрутах, модели или первом аргументе form_for), чтобы Rails знал, как построить правильный путь? Или есть более похожий на Rails способ создания такой структуры, чтобы Rails автоматически знал, как строить пути?
form_for(@foo, url: ...
). Я пытаюсь найти Rails-Way, чтобы избежать этого обходного пути, поэтому приветствуются более общие изменения структуры маршрута или других элементов. - person Sebastian vom Meer   schedule 29.04.2015