2013-12-12 39 views
4

我有這個控制器更新記錄軌4無路由匹配[PATCH] 「/管理/ usersupdate」

def usersedit 
    @user = User.find_by id: params[:id] 
end 

def usersupdate 
    @user = User.find_by id: params[:id] 
    if @user.update(post_params) 
    redirect_to action: :users 
    else 
    render 'usersedit' 
    end 
end 

而這種形式在視圖中usersedit.html.erb

<%= form_for :user, url: {action: "usersupdate"}, method: :patch do |f| %> 

但當我提交表單出現此錯誤

No route matches [PATCH] "/admin/usersupdate" 

我的路線代碼:

 Prefix Verb URI Pattern      Controller#Action 
      root GET/        pages#home 
     admin_index GET /admin/index(.:format)   admin#index 
    admin_grades GET /admin/grades(.:format)   admin#grades 
     pages_home GET /pages/home(.:format)   pages#home 
    pages_register GET /pages/register(.:format)  pages#register 
    pages_create POST /pages/create(.:format)   pages#create 
     pages_login GET /pages/login(.:format)   pages#login 
    pages_logging POST /pages/logging(.:format)  pages#logging 
    pages_logout GET /pages/logout(.:format)   pages#logout 
        GET /activate/:user/:hash(.:format) pages#activate 
     remember POST /remember(.:format)    pages#remember 
    reactivation POST /reactivation(.:format)   pages#reactivation 
    admin_documents GET /admin/documents(.:format)  admin#documents 
     admin_users GET /admin/users(.:format)   admin#users 
        GET /admin/usersedit/:id(.:format) admin#usersedit 
admin_usersupdate POST /admin/usersupdate(.:format) admin#usersupdate 

請幫忙。

+0

'patch'不是'post'。爲什麼你不只是使用資源豐富的路由? – sevenseacat

回答

10

您用POST定義了路線,但在表單中使用了PATCH

+0

你能解釋一下嗎?我有個類似的問題。 –

+1

@TallPaul你可能會複製粘貼新表單,就像我一樣。該操作應該是':update',而不是':create'。簡單的錯誤。 – Fuser97381

15

變化形式方法的方法:張貼

表單

form_for :user, url: {action: "usersupdate"}, :method => :POST do |f| 
11

的頭我有同樣的問題,你需要正確地更新您的routes.rb文件。

我猜你在路線文件中定義此路徑的行以「post」開始,嘗試將其更改爲「patch」。

的config/routes.rb中

變化:

post "admin/usersupdate" => "admin#usersupdate", :as => "admin/usersupdate" 

到:

patch "admin/usersupdate" => "admin#usersupdate", :as => "admin/usersupdate" 

一切工作順順當當,我後我做了這個變化。

+0

此解決方案非常簡單且具有前瞻性,因爲修補程序正在進入樣式:http://weblog.rubyonrails.org/2012/2/26/edge-rails-patch-is-the-new-primary-http-method - 用於-更新/ – s2t2