Ruby on rails Rails-自定义修补程序操作被重定向到更新
要在Rails 4.2应用程序中导出csv文件,将在routes.rb中添加一个补丁操作Ruby on rails Rails-自定义修补程序操作被重定向到更新,ruby-on-rails,Ruby On Rails,要在Rails 4.2应用程序中导出csv文件,将在routes.rb中添加一个补丁操作export_file: resources :payment_requests do collection do patch :export_file end end 在索引视图中,为csv添加了一个form_标签: <%= form_tag export_file_payment_requests_path(format: 'csv'), method: :p
export_file
:
resources :payment_requests do
collection do
patch :export_file
end
end
在索引视图中,为csv添加了一个form_标签
:
<%= form_tag export_file_payment_requests_path(format: 'csv'), method: :put do %>
<%= submit_tag 'CSV' %>
<% end %>
但是,在导出csv时,操作是update
,而不是export\u file
,这会导致后续导出出错。是什么导致补丁操作导出文件的更新路由错误
如果export\u file
声明为get
,则路由是正确的。您应该在表单上使用method::patch
。或者将路由上的方法更改为put:export\u file
。然而,我认为在这种情况下,最好的选择是使用get
将其更改为rails4中的补丁。
有效。认为put和patch对于方法是相同的:rails在资源路由上使用patch
而不是put
来更新资源。您正在创建一条新的非资源性路线。然后,您需要选择最佳的http方法来解决您的问题。这不是关于“在rails 4.2中将更改为补丁”。这是关于在所有这些方法中使用正确的http方法的问题。
export_file_payment_requests PATCH /payment_requests/export_file(.:format) payment_requestx/payment_requests#export_file
PATCH /payment_requests/:id(.:format) payment_requestx/payment_requests#update
PUT /payment_requests/:id(.:format) payment_requestx/payment_requests#update