我有一个 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
),它会起作用!
PATCH
因此,如果所有嵌套数组值都是“复数”,则jQuery 似乎只允许请求。这是按预期工作还是只是一个错误?还是我错过了什么?我正在使用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
直接在浏览器中编辑属性(即不是刷新或代码更改),它会立即工作。所以这似乎是客户端而不是服务器端的东西。