tutorial rubyonrails rails guide guias generate ejemplos ruby-on-rails ruby-on-rails-3 open-uri

ruby-on-rails - rubyonrails - ruby on rails ejemplos



Rieles-Cómo enviar una imagen desde un controlador (2)

¿Hay alguna razón por la que no pueda guardar el archivo en public/_ctrack.gif , eliminar la ruta y dejar que el servidor web subyacente sirva la imagen?

Si necesita procesar la imagen desde el disco, simplemente use open en el nombre de archivo local:

send_data open("#{Rails.root}/path/to/file.gif", "rb") { |f| f.read } .......

El rb establece el archivo para open y binary modos binary .

En mi aplicación de rieles, necesito devolver una imagen.

Tengo un píxel de seguimiento 1x1.gif en mi ruta de la siguiente manera:

match "/_ctrack.gif" => "email_tracking_pixels#my_method"

En el controlador:

def my_method send_data open(''https://www.xxxxxx.com/images/1x1_transparent.gif'') {|f| f.read }, :filename => ''1x1_transparent.gif'', :type => ''image/gif'' end

El problema es que, por alguna razón, a veces esto se agota. con el siguiente error:

2011-03-07T20:08:36-08:00 heroku[router]: Error H12 (Request timeout) -> GET www.xxxxxxx.com/images/1x1_transparent.gif dyno=web.1 queue=0 wait=0ms service=0ms bytes=0 2011-03-07T20:08:36-08:00 app[web.1]: 2011-03-07T20:08:36-08:00 app[web.1]: OpenURI::HTTPError (503 Service Unavailable): 2011-03-07T20:08:36-08:00 app[web.1]: app/controllers/email_tracking_pixels_controller.rb:19:in `my_method'' 2011-03-07T20:08:36-08:00 app[web.1]: lib/rack/www.rb:7:in `call''

¿Alguna idea sobre cómo puedo pasar esta imagen que está almacenada localmente, en lugar de tener que usar abrir y hacer una llamada web a mi propio servidor?

Gracias


¿No sería mejor usar send_file en su lugar?

send_file Rails.root.join("public", "file.gif"), type: "image/gif", disposition: "inline"