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

Kal*_*son 4 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

这个表单在usersedit.html.erb的视图中

<%= form_for :user, url: {action: "usersupdate"}, method: :patch do |f| %>
Run Code Online (Sandbox Code Playgroud)

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

No route matches [PATCH] "/admin/usersupdate"
Run Code Online (Sandbox Code Playgroud)

我的路线代码是:

     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
Run Code Online (Sandbox Code Playgroud)

请帮忙.

Dan*_*nas 15

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

你的表格标题

form_for :user, url: {action: "usersupdate"}, :method => :POST do |f|
Run Code Online (Sandbox Code Playgroud)


skp*_*rin 11

我有同样的问题,你需要正确更新routes.rb文件.

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

config/routes.rb里面

更改:

post "admin/usersupdate" => "admin#usersupdate", :as => "admin/usersupdate"
Run Code Online (Sandbox Code Playgroud)

至:

patch "admin/usersupdate" => "admin#usersupdate", :as => "admin/usersupdate"
Run Code Online (Sandbox Code Playgroud)

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


xda*_*azz 10

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