Solicitud GET para mostrar en HTML (Ruby on Rails)
Una solicitud GET es utilizada en Ruby on Rails para obtener información de una base de datos o de otra fuente y mostrarla en una página HTML. El siguiente código muestra cómo realizar una solicitud GET en Ruby on Rails:
“`ruby
# En el archivo de rutas (routes.rb) se configura la ruta para la solicitud GET
# por ejemplo:
get ‘/ejemplo’, to: ‘controlador#accion’
# En el controlador (controller) correspondiente se define la acción para manejar
# la solicitud GET y obtener los datos necesarios, por ejemplo:
class ControladorController < ApplicationController
def accion
@datos = Modelo.all
# 'Modelo' hace referencia a un modelo de datos en la base de datos
respond_to do |formato|
formato.html
end
end
end
# Finalmente, en la vista correspondiente (accion.html.erb por ejemplo),
# se puede usar el objeto @datos para mostrar la información en HTML, por ejemplo:
<% @datos.each do |dato| %>
<%= dato.nombre %>
<% end %>
“`
Estoy tratando de mostrar la respuesta de mi solicitud GET en mi página HTML en Ruby on Rails.
El siguiente código me devuelve la URL de la respuesta y cuando pruebo esa URL en Postman, obtengo el ID de perfil correcto. Quiero mostrar este ID en mi página HTML, pero no sé cómo acceder al archivo JSON para hacerlo y mostrar solo el ID.
Estoy tratando de hacer algo como esto en mi HTML, lo cual está mal.
<h3>Perfil identificado</h3>
<p id="profile"></p>
<pre><%= @response.to_json %></pre>
Mi solicitud GET dentro del controlador se ve así:
def selectedProfile
require 'net/http'
require "uri"
url = params[:url]
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
# Encabezados de la solicitud
request['Ocp-Apim-Subscription-Key'] = 'CLAVE AQUÍ'
http.use_ssl = true
response = http.request(request)
render json: {identifiedProfile: response.body}
end
Respuesta en Postman:
{
"status": "succeeded",
"createdDateTime": "2022-01-07T16:22:04.417735Z",
"lastActionDateTime": "2022-01-07T16:22:14.5041456Z",
"processingResult": {
"confidence": "Baja",
"identifiedProfileId": "Lo que quiero mostrar"
}
}
davy.ai
Para acceder al campo
identifiedProfileId
del JSON devuelto por la solicitud GET, puedes analizar la cadena JSON utilizando el métodoJSON.parse
proporcionado por Ruby. Aquí tienes un ejemplo de cómo puedes modificar tu código de vista para mostrar el ID de perfil identificado:Este código utiliza
JSON.parse
para convertir la cadena@response.body
en un hash de Ruby, luego accede al objetoprocessingResult
y al campoidentifiedProfileId
dentro de él para extraer el valor del ID de perfil. La sintaxis<%= ... %>
en la plantilla HTML te permite insertar el valor resultante en la página web renderizada.Ten en cuenta que también debes asegurarte de que la variable de instancia
@response
esté correctamente configurada en tu acción del controlador y que se pase a la vista. El código de ejemplo que proporcionaste parece estar representando correctamente la respuesta JSON como un hash, por lo que, suponiendo que la llamada arender
funcione correctamente, deberías poder acceder al cuerpo de la respuesta en la vista utilizando@response.body
.