所以,我有這種形式的聲明:的Rails:方法=>:補丁不起作用
<%= form_for 'students_list', {:url => update_students_list_stream_url(@stream), :method=>:patch} do |students_list_form| %>
正如API文檔中描述
,但這使我的錯誤:
No route matches [POST] "/streams/26/edit-students-list"
因此,它仍然會嘗試後,即使我的HTML輸入有:
<input type="hidden" name="_method" value="patch" />
從Rails的指南:
Rails works around this issue by emulating other methods over POST with a hidden input named "_method", which is set to reflect the desired method:
我很困惑
如果我找到你的話,你正在嘗試更新學生列表流,這是正確的嗎? –
Rails使用['Rack :: MethodOverride'中間件](https://github.com/rack/rack/blob/857641dab255dbec490fead1d3a0f1ff999b2137/lib/rack/method_override.rb)處理請求,然後將其傳遞到路由。 'Rack :: MethodOverride'應該在'_method'參數中選擇,我對它爲什麼不工作也有點困惑。我建議嘗試發送帶有cURL或Postman的請求來排除故障,因爲您正在消除與瀏覽器相關的任何錯誤或與該表單相關的任何內容。 – max
請注意,Rails unobtrustive JavaScript驅動程序也會發送本地PATCH/PUT/DELETE請求的一些技巧,這也可能是問題的一部分。 – max