我正在尝试提交表格,但如果我只是输入form_for @classroom
我收到“没有路线匹配 [POST]”错误。
现在,通过下面发布的代码,我在表单中得到了错误的网址。如果我在浏览器中手动更改 url,它就会通过,我想我可以通过 javascript 做到这一点,但是...为什么...是...这...发生...?
直到昨天一切都工作正常。我什至尝试回滚到我更改的内容,但我似乎无法跟踪出了什么问题。
路线.rb
patch 'classrooms/:id/update' => "classrooms#update", as: :update_classroom
resources :classrooms, except: :update
从导轨端部形成
<%= form_for(update_classroom_path(@classroom), method: "patch") do |class_f| %>
浏览器中的表单
<form action="/classrooms/23/edit" accept-charset="UTF-8" method="post">
<input name="utf8" type="hidden" value="✓">
<input type="hidden" name="_method" value="patch">
<input type="hidden" name="authenticity_token" value="******">
耙路线
absences POST /absences(.:format) absences#create
POST /classrooms/:id/getAbsences(.:format) classrooms#getAbsences
update_classroom PATCH /classrooms/:id/update(.:format) classrooms#update
classrooms GET /classrooms(.:format) classrooms#index
POST /classrooms(.:format) classrooms#create
new_classroom GET /classrooms/new(.:format) classrooms#new
edit_classroom GET /classrooms/:id/edit(.:format) classrooms#edit
classroom GET /classrooms/:id(.:format) classrooms#show
DELETE /classrooms/:id(.:format) classrooms#destroy
root GET / pages#start
只是为了回答你的标题问题,我认为你的表单方法确实是“PATCH”。请参阅指南http://guides.rubyonrails.org/form_helpers.html关于 Rails 如何制作补丁形式。
Rails 框架鼓励应用程序采用 RESTful 设计,这意味着您将发出大量“PATCH”和“DELETE”请求(除了“GET”和“POST”)。然而,在提交表单时,大多数浏览器不支持“GET”和“POST”以外的方法。
Rails 通过使用名为“_method”的隐藏输入来模拟 POST 上的其他方法来解决此问题,该输入被设置为反映所需的方法:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)