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

时间:2015-04-20 23:46:13

标签: ruby-on-rails

要在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,则路由正确。

1 个答案:

答案 0 :(得分:1)

您应该在表单上使用method: :patch。或者将路线上的方法更改为put :export_file。但是我认为在这种情况下最好的选择是使用get