Ошибки маршрута при использовании маршрутов пространства имен

Как вы относитесь к form_for, когда маршруты имеют пространство имен? Я получаю некоторые странные ошибки маршрута, которые я действительно ожидаю получить.

Например, скажем, у вас есть контроллер под названием Admin::CompaniesController в ваше пространство имен :admin в ваших маршрутах .rb:

namespace :admin do
  resources :companies
end

Большинство вещей работают нормально, но я получаю сообщение об ошибке при создании новой формы. Здесь код:

<%= simple_form_for(@company, :url => admin_company_path(@company)) do |f| %>

И вот сообщение об ошибке:

ActionView::Template::Error: No route matches {:action=>"show", :controller=>"admin/companies", :id=>#<Company id: nil, name: nil, phone_number: nil, address: nil, postal_code: nil, is_enabled: true, courses_created: 0, province_id: nil, theme_id: nil, payment_plan_id: nil, created_at: nil, updated_at: nil>}

Как я могу получить рельсы, чтобы играть здесь хорошо? Я, очевидно, хочу один URL-адрес для редактирования, а другой для новых форм. Обычно мне даже не приходилось ставить :url в мои инструкции form_for, но из-за гнездования я вынужден.

Я понятия не имею, что делать сейчас, по крайней мере, не изящно.

Ответ 1

Попробуйте использовать simple_form_for([:admin, @company]) do |f|

Ответ 2

Я считаю, что мне просто нужно плюрализовать путь в конце пути, например:

<%= simple_form_for(@company, :url => admin_companies_path(@company)) do |f| %>

Это не то, что я ожидал. Я просто догадался. Это не правильный маршрут или что-то еще, но он, похоже, работает для puts и posts.