更新记录栏4没有路由匹配[PATCH]“/ admin / usersupdate”

时间:2013-12-12 04:25:42

标签: ruby-on-rails ruby ruby-on-rails-4

我有这个控制器

 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

请帮助。

3 个答案:

答案 0 :(得分:15)

更改表单方法中的方法:: post

表格标题

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

答案 1 :(得分:11)

我遇到了同样的问题,你需要正确更新你的routes.rb文件。

我猜你的路线文件中你已定义此路径的行以“post”开头,尝试将其更改为“patch”。

config / routes.rb

内部

更改:

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

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

在我做出这个改变后,一切都在为我而游泳。

答案 2 :(得分:10)

您使用POST定义了路线,但在表单中使用了PATCH