Ответ 1
Вы можете добавить имя пространства имен в качестве символа:
<%= form_for [:admin, @user] do |f| %>
Я хочу настроить 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 с ресурсом, поддерживающим имена?
Вы можете добавить имя пространства имен в качестве символа:
<%= form_for [:admin, @user] do |f| %>
Когда вы используете form_for, он предполагает, что соответствующий путь является [model_name] _path. Вы должны явно указать ему url с
form_for @user, url: admin_user_path