Вложенные контроллеры Form_with Devise Error
Итак, у меня есть RailsApp, и я решил создать для своих пользователей вложенный контроллер, называемый backoffice.
Мои маршруты к индексам работают нормально, но когда я пытаюсь отредактировать или создать пользователя, я получаю следующую ошибку:
NoMethodError in Backoffice::Users#new
undefined method `users_path' for #<#
<Class:0x007efc6d4fd1c8>:0x007efc6cd38708>
Did you mean? user_session_path
Вот мои маршруты:
Rails.application.routes.draw do
resources :advertises
resources :categories
devise_for :users
namespace :backoffice do
resources :users, except: [:show]
end
end
Я использую Rails 5.1.4, поэтому "form_tag" и "form_for" заменены на "form_with"
Вот мой _form.html.erb, где моя проблема:
<%= form_with(model: user, root: true) do |form| %>
Структура контроллера
class Backoffice::UsersController < BackofficeController
before_action :set_user, only: [:show, :edit, :update, :destroy]
before_action :pundit_user
....
Может ли быть проблема с разработкой? Или это просто ошибка вложенного контроллера?
1 ответ
Вы, вероятно, должны переместить devise_for
позвонить в :backoffice
пространство имен, так как именно там находится ресурс пользователя.
Если вы бежите rails routes
в командной строке вы увидите проблему. Devise пытается позвонить users_path
но это не существует, то, что существует backoffice_users_path