2015-04-20 2 views
1

Чтобы экспортировать файл CSV в Rails 4.2 приложения, действие патча export_file добавляется routes.rb:Rails - настраиваемое действие патча перенаправляются обновить

resources :payment_requests do 
    collection do 
     patch :export_file 
    end 
end 

В связи индекс form_tag добавляется для CSV:

В 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 action export_file?

Если export_file объявлен как get, то правильная маршрутизация.

ответ

1

Вы должны использовать method: :patch на вашей форме. Или измените метод на маршрутах на put :export_file. Однако я считаю, что лучшим выбором в этом случае является использование get.

+0

put изменен на патч в рельсах 4. – user938363

+0

'<% = form_tag export_file_payment_requests_path (формат: 'csv'), метод:: patch do%>' работает. Мысли put и patch были одинаковыми для метода: – user938363

+0

rails использует 'patch' вместо' put' на находчивой маршрутизации для обновления ресурсов. здесь вы создаете новый ненаучный маршрут. то вам нужно выбрать лучший метод http для решения вашей проблемы. дело не в том, чтобы «поменять патч в рельсах 4.2». it'a об использовании правильного метода http среди всех из них. – dx7

Смежные вопросы