我有一个Rails应用程序,使用一个包含多个嵌套资源的表单。关于它的奇怪怪癖是我使用多个单select
个输入作为一个多select
输入(即在它们之间使用相同的name
)。我也是通过JavaScript提交的(即remote: true
)。 select
html如下:
<select name="order_item[order_item_options_attributes][1][value2][]">(...)</select>
当我在create
使用此表单时,此工作正常。但是,当我尝试update
时,它会恢复为POST
请求,而不是PATCH
。正确生成_method
隐藏字段:
<input name="_method" value="patch" type="hidden">
这是奇怪的地方!如果我将name
输入的select
更改为order_item[order_item_options_attributes][1][value2s][]
(请注意s
之后的value2
),它会有效!
因此,如果所有嵌套数组值都是&#34;复数&#34;,jQuery似乎只允许PATCH
请求。这是按预期工作还是只是一个错误?或者我错过了什么?我正在使用Rails
4.2.8和jQuery-rails
4.3.1。
编辑:
以下是相关路线。它只是您标准的嵌套路线:
resources :orders do
resources :order_items
end
输出:
order_order_items_path GET /orders/:order_id/order_items(.:format) order_items#index
POST /orders/:order_id/order_items(.:format) order_items#create
new_order_order_item_path GET /orders/:order_id/order_items/new(.:format) order_items#new
edit_order_order_item_path GET /orders/:order_id/order_items/:id/edit(.:format) order_items#edit
order_order_item_path GET /orders/:order_id/order_items/:id(.:format) order_items#show
PATCH /orders/:order_id/order_items/:id(.:format) order_items#update
PUT /orders/:order_id/order_items/:id(.:format) order_items#update
DELETE /orders/:order_id/order_items/:id(.:format) order_items#destroy
编辑2(澄清):
这似乎是jQuery
问题,而不是Rails
问题。我之所以这么说是因为我可以直接在浏览器中编辑name
属性(即不是刷新或代码更改),它会立即生效。所以这似乎是客户端而不是服务器端。