名前空間付きのリソースがありますが、コントローラーのディレクトリだけにあります。したがって、routes.rb では次のようになります。
namespace :admin do
resources :user
end
これは次のことを意味します。
admin_user_index GET /admin/user(.:format) admin/user#index
POST /admin/user(.:format) admin/user#create
new_admin_user GET /admin/user/new(.:format) admin/user#new
edit_admin_user GET /admin/user/:id/edit(.:format) admin/user#edit
admin_user GET /admin/user/:id(.:format) admin/user#show
PUT /admin/user/:id(.:format) admin/user#update
DELETE /admin/user/:id(.:format) admin/user#destroy
アクション「新規」を除いてすべて正常に機能しますが、_form レンダリングは「編集」アクションでも同じであり、正常に機能するため、これは奇妙です。これは、管理ディレクトリ内の私のコントローラです:
class Admin::UserController < ApplicationController
# GET /users
def index
@users = User.all
end
# GET /users/1
def show
@user = User.find(params[:id])
end
# GET /users/new
def new
@user = User.new
end
# GET /users/1/edit
def edit
@user = User.find(params[:id])
end
# POST /users
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
else
format.html { render action: "new" }
end
end
end
# PUT /users/1
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to [:admin ,@user], notice: 'User was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
end
そして、これはエラーの原因となるフォームの最初の行です: undefined method `admin_users_path'
<%= form_for [:admin, @user] do |f| %>
エラーがどこにあるのかわかりません。何かアドバイスはありますか?