ruby on rails - rails - los carriles no enviarán datos como archivo
ruby on rails que es (3)
Tengo problemas con el método Rails: send_data
Aquí está mi acción:
def export
send_data(current_user.contacts.to_csv,
type: ''text/csv; charset=utf-8; header=present'',
disposition: ''attachment; filename=contacts.csv''
)
end
Esto no implicará una descarga, solo muestra el resultado en la pantalla. He intentado con servidores pow
y thin
.
No puedo entender lo que estoy haciendo mal?
Estoy usando rails 4.0.0.beta
EDITAR:
Encabezados CURL:
< HTTP/1.1 200 OK
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< X-UA-Compatible: chrome=1
< X-XHR-Current-Location: /contacts/export
< Content-Disposition: attachment; filename=contacts.csv
< Content-Transfer-Encoding: binary
< Content-Type: text/csv; charset=utf-8; header=present
< Cache-Control: private
< ETag: "48d3d8bd1c8d25cafb82ab705e4875ab"
< Set-Cookie: request_method=GET; path=/
< X-Request-Id: c2588883-f3f9-4f68-8a8c-0de758c47288
< X-Runtime: 0.185206
< Connection: close
< Server: thin 1.5.0 codename Knife
send_data tiene una opción hash, por lo que el tipo, disposición y nombre de archivo deben configurarse en hash:
def export
send_data(current_user.contacts.to_csv,
type: ''text/csv'', disposition: ''attachment'', filename: ''contacts.csv'')
end
Me lo imaginé.
Fue turbolinks lo que estaba estropeando todo. Agregué data-no-turbolink al enlace de exportación y ahora funciona como se esperaba.
Las respuestas aquí son para turbolinks clásicos. Hay una notación más nueva en las versiones más nuevas de turbolinks:
<a href="/" data-turbolinks="false">Disabled</a>
https://github.com/turbolinks/turbolinks#disabling-turbolinks-on-specific-links