Rails: form_for namespaced resource

Я хочу настроить CRUD для пользователей, доступных только для администраторов моего веб-приложения. Итак, в routes.rb:

namespace :admin do
  resources :user
end

что означает следующее:

admin_user_index GET    /admin/user(.:format)                  admin/user#index
                 POST   /admin/user(.:format)                  admin/user#create
  new_admin_user GET    /admin/user/new(.:format)              admin/user#new
 edit_admin_user GET    /admin/user/:id/edit(.:format)         admin/user#edit
      admin_user GET    /admin/user/:id(.:format)              admin/user#show
                 PUT    /admin/user/:id(.:format)              admin/user#update
                 DELETE /admin/user/:id(.:format)              admin/user#destroy

Показать, индекс работает нормально, но редактировать, а новый - нет. Я продолжаю получать эту ошибку в первой строке _form:
undefined метод `user_path 'для # < #: 0x007fb6645c6378 >

что и есть:

Как я могу использовать form_for с ресурсом, поддерживающим имена?

Ответы

Ответ 1

Вы можете добавить имя пространства имен в качестве символа:

 <%= form_for [:admin, @user] do |f| %>

Ответ 2

Когда вы используете form_for, он предполагает, что соответствующий путь является [model_name] _path. Вы должны явно указать ему url с

form_for @user, url: admin_user_path