1

我有一个 Rails 应用程序,它使用一个包含多个嵌套资源的表单。关于它的奇怪怪癖是我使用几个单个select输入作为一个多个select输入(即name在它们之间使用相同的输入)。我也通过 JavaScript(即remote: true)提交了这个。selecthtml如下:

<select name="order_item[order_item_options_attributes][1][value2][]">(...)</select>

当我将此表单用于create. 但是,当我尝试时update,它会恢复为POST请求而不是PATCH. _method隐藏字段正在正确生成:

<input name="_method" value="patch" type="hidden">

这就是它变得奇怪的地方!如果我将输入更改nameselectorder_item[order_item_options_attributes][1][value2s][]注意s之后value2),它会起作用!

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

4

0 回答 0