2017-11-26 7 views
0

Also, ich habe eine RailsApp und ich beschloss, einen verschachtelten Controller für meine Benutzer namens Backoffice zu tun.Verschachtelte Controller Form_with Devise Fehler

Meine Strecken zu indizieren arbeiten gut, aber wenn ich versuche, um einen Benutzer zu bearbeiten oder erstellen, erhalte ich folgende Fehlermeldung:

NoMethodError in Backoffice::Users#new 
undefined method `users_path' for #<# 
<Class:0x007efc6d4fd1c8>:0x007efc6cd38708> 
Did you mean? user_session_path 

Hier sind meine Routen:

Rails.application.routes.draw do 
    resources :advertises 
    resources :categories 

    devise_for :users 

    namespace :backoffice do 
    resources :users, except: [:show] 
    end 
end 

Ich benutze Rails 5.1.4, also werden 'form_tag' und 'form_for' für 'form_with' ersetzt.

Hier sind meine _form.html.erb wo sind mein Problem:

<%= form_with(model: user, root: true) do |form| %> 

Die Struktur des Reglers ist

class Backoffice::UsersController < BackofficeController 
    before_action :set_user, only: [:show, :edit, :update, :destroy] 
    before_action :pundit_user 
.... 

das Problem mit devise sein könnte? Oder es ist nur ein verschachtelter Controller Fehler?

Antwort

0

Sie sollten wahrscheinlich den devise_for Aufruf in den Namespace verschieben, da sich dort die Benutzerressource befindet.

Wenn Sie rails routes in der Befehlszeile ausführen, sehen Sie das Problem. Devise versucht users_path zu rufen, aber das existiert nicht, was existiert ist backoffice_users_path

+0

Ich habe das auch gedacht, aber es war nicht, ich bewegte es, im Backoffice, über und unter Ressourcen. – AndrePaliao

Verwandte Themen