Javascript jQuery Rails嵌套资源Bug?
我有一个Rails应用程序,它使用一个表单,表单中有几个嵌套的资源。奇怪的是,我使用多个Javascript jQuery Rails嵌套资源Bug?,javascript,jquery,ruby-on-rails,jquery-rails,Javascript,Jquery,Ruby On Rails,Jquery Rails,我有一个Rails应用程序,它使用一个表单,表单中有几个嵌套的资源。奇怪的是,我使用多个select输入作为一个多select输入(即在它们之间使用相同的name)。我还通过JavaScript(即remote:true)提交了此文件。selecthtml如下: <select name="order_item[order_item_options_attributes][1][value2][]">(...)</select> 这就是奇怪的地方!如果我将我的的名称更改
select
输入作为一个多select
输入(即在它们之间使用相同的name
)。我还通过JavaScript(即remote:true
)提交了此文件。select
html如下:
<select name="order_item[order_item_options_attributes][1][value2][]">(...)</select>
这就是奇怪的地方!如果我将我的的名称
更改为订单项目[order\u item\u options\u attributes][1][value2s][
(注意值2
之后的s
),它会工作
因此,如果所有嵌套数组值都是“复数”的,jQuery似乎只允许补丁
请求。这是正常工作还是只是一个bug?还是我遗漏了什么?我使用的是Rails
4.2.8和jqueryrails
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
属性(即,不刷新或更改代码),它将立即工作。因此,这似乎是客户端而不是服务器端的东西。没有什么贡献,但对此感兴趣。然而,我高度怀疑多元化与此有关。同样值得注意的是,这可能是jquery rails的事情,而不是jquery的事情?您是否在路由中将操作设置为补丁
请求?可能是有了额外的s
,就有了添加值的空间,而不是没有s
,您已经发布了值。如果是这种情况,那么rails可能只是将s
作为另一个POST请求处理。重新陈述我最初的问题,你是否有一个更新功能,独立于此,在你的路由中设置为补丁
请求?@CarlMarkham,这就是我的想法@AaronEveleth是的,我确实有一个更新
路由设置为补丁
请求。当我有s
时,它会正确地转到该路线。只有当我删除s
时,它才会恢复为POST
请求(并且我没有更新POST
路径),因此它甚至不会进入我的rails代码。这就是为什么我认为这是jQuery(-Rails)的问题。@RyanK可能值得显示表单中使用的路由路径以及路由文件中的相关路由。为了澄清起见,为了未来的观众,没有什么贡献,但对此感兴趣。然而,我高度怀疑多元化与此有关。同样值得注意的是,这可能是jquery rails的事情,而不是jquery的事情?您是否在路由中将操作设置为补丁
请求?可能是有了额外的s
,就有了添加值的空间,而不是没有s
,您已经发布了值。如果是这种情况,那么rails可能只是将s
作为另一个POST请求处理。重新陈述我最初的问题,你是否有一个更新功能,独立于此,在你的路由中设置为补丁
请求?@CarlMarkham,这就是我的想法@AaronEveleth是的,我确实有一个更新
路由设置为补丁
请求。当我有s
时,它会正确地转到该路线。只有当我删除s
时,它才会恢复为POST
请求(并且我没有更新POST
路径),因此它甚至不会进入我的rails代码。这就是为什么我认为这是jQuery(-Rails)的问题。@RyanK可能值得显示表单中使用的路由路径以及路由文件中的相关路由。只是为了澄清和未来的观众
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