2017-11-26 20 views
0

私はRailsAppを持っており、バックオフィスと呼ばれるユーザーにネストされたコントローラを実行することに決めました。インデックスへネストされたコントローラForm_with Devise Error

私のルートは細かいに取り組んでいるが、私は、ユーザーを編集または作成しようとすると、私は次のエラーを取得する:ここで

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 
.... 

ある問題が工夫してだろうか?それとも、ネストされたコントローラのエラーですか?

答えて

0

devise_forコールは、:backofficeという名前空間に移動する必要があります(つまり、ユーザーリソースがある場所)。

rails routesをコマンドラインで実行すると、問題が表示されます。 Deviseはusers_pathに電話しようとしていますが、存在するものは存在しません。backoffice_users_path

+0

私はそれも考えましたが、そうではありませんでした。私はバックオフィス内で、リソースの上と下に移動しました。 – AndrePaliao