更新记录栏4没有路由匹配“/ admin / 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的视图中

  

但是当我提交表单时,会出现此错误

 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 

请帮忙。

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

你的表格标题

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

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

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

config / routes.rb里面

更改:

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

至:

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

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

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