我有这个控制器
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 :(得分: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
。