要在Rails 4.2应用程序中导出csv文件,会在routes.rb中添加补丁操作export_file
:
resources :payment_requests do
collection do
patch :export_file
end
end
在索引视图中,为csv添加了form_tag
:
<%= form_tag export_file_payment_requests_path(format: 'csv'), method: :put do %>
<%= submit_tag 'CSV' %>
<% end %>
在rake routes
输出中,有export_file
的路径:
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
但是,导出csv时,操作为update
而不是export_file
,导致后续导出错误。导致update
操作patch
的{{1}}路由错误的原因是什么?
如果export_file
被声明为export_file
,则路由正确。
答案 0 :(得分:1)
您应该在表单上使用method: :patch
。或者将路线上的方法更改为put :export_file
。但是我认为在这种情况下最好的选择是使用get
。