2010-11-27 12 views
7

Así que logré obtener una imagen en mi base de datos MySQL (hay un gran número hexadecimal en el campo), pero no encuentro ninguna documentación sobre cómo muestra la imagen en un entorno de rieles ... cuando se imprime, comienza con un GIF89 ... y luego los personajes que ves en un GIF cuando lo abres en el Bloc de notas. : P ¡Cualquier pista sería muy apreciada!Rieles: mostrar una imagen de un campo blob en una base de datos

Gracias.

Respuesta

20

El siguiente código debería funcionar. En su controlador, crear un método:

 

def show_image 
    @user = User.find(params[:id]) 
    send_data @user.image, :type => 'image/png',:disposition => 'inline' 
end 
 

En su opinión:

 

<%= image_tag url_for(:controller => "mycontroller", :action => "show_image", :id => @user.id) %> 
 

Yo recomiendo usar la gema Paperclip. Hace que guardar/ver imágenes sea realmente fácil.

+0

Gracias, eso funciona. Paperclip probablemente sea la forma en que finalmente voy, pero necesitaba una solución rápida y sucia para propósitos de demostración. – wulftone

+0

@wulftone. Me alegro de ser de ayuda. – Raunak

5

También debe agregar

resources :users do 
    get 'show_image', :on => :collection 
end 

o

get users/show_image" => "users#show_image" 

antes

resources :users en route.rb archivo

+1

¿por qué debería hacerlo? – silvio

+0

@silvio Rails 4 se quejará: ActionView :: Template :: Error (Ninguna ruta coincide con {: controller => "user_controller",: action => "show_image",: id => 9777}): –

+0

Gracias, esto es definitivamente una necesidad para Rails 4 – Tico

10

Debido a que usted ha mencionado "rápida y sucia", me Lanzaremos esto como una alternativa ...

<%= ('<img src="data:image/jpg;base64,%s">' % Base64.encode64(@the_data)).html_safe %> 

Creo que esto es lo más parecido a lo que quería hacer. Hay algunas razones por las que este código no debe usarse tal cual, pero es simple. Tendría que pensar más acerca de cuán mala idea es marcar todo como html_safe. Además, esto no funcionaría en versiones anteriores de IE.

Cuestiones relacionadas