0
我有一個命名空間資源,但只是在控制器目錄。 所以在routes.rb中:Rails:奇怪的行爲在form_for
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
這是造成錯誤的表格的第一行:未定義的方法`admin_users_path」
<%= form_for [:admin, @user] do |f| %>
我想不出錯誤在哪裏。有任何建議嗎?
好它的工作原理。但爲什麼?我對Ror非常陌生,我不明白爲什麼在編輯操作中它可以正常工作,而在新的操作中它沒有? 一切都是一樣的wasnt'it?感謝您的方式 – Barbared
這在評論中很難解釋,但基本上Rails會根據REST概念對如何構建您的URL進行一定的假設。通過發佈到多元化路線創建新對象,並通過PUTing編輯對象到單一路線。既然你只有一條獨特的路線,那就是編輯工作的原因。我強烈建議閱讀http://guides.rubyonrails.org/routing.html,因爲這說明了路由比我更好。 –
好的再次感謝 – Barbared