それで、私は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は0あなたはおそらく移動する必要があります devise_for
あなたの :backoffice
名前空間は、ユーザーリソースが存在する場所です。
あなたが走ったら rails routes
コマンドラインで問題がわかります。工夫は電話しようとしている users_path
しかし、それは存在しません、存在するのは backoffice_users_path