Una solución elegante para casos en los que queremos traer información de otra web pasa por hacer un get desde el propio controlador y obtener en bruto la web a incrustar y tratarla antes de mostrarla en las vistas.
Por ejemplo si queremos traer la página de resultado de google para la consulta "Juegos de mesa" podríamos hacer la petición en nuestro controlador:
@http = Net::HTTP.new("www.google.es", 80)
@http.use_ssl = true
return = @http.get("/search?q=juegos+de+mesa").read_body
En return tenemos almacenado el grueso de la página que queremos mostrar, ahora nos queda parsearla en busca de lo que queremos.
@results = Nokogiri::HTML(return).xpath('//table').to_a.first.to_s
Ahora tenemos almacenada la parte de la página que queremos mostrar con un string que contiene el html. En la vista tendremos que mostrar la información haciendo un raw.
<%= raw @results %>Y si no nos queda más que meter en nuestros CSS las clases y etiquetas necesarias para que se muestre la información a nuestro gusto.
0 comentarios:
Publicar un comentario en la entrada