Ruby on rails Rails-自定义修补程序操作被重定向到更新

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

要在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: :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