Вложенные контроллеры 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

Другие вопросы по тегам