{"id":6489,"date":"2014-09-05T04:52:31","date_gmt":"2014-09-05T04:52:31","guid":{"rendered":"https:\/\/dev.railscarma.com\/how-to-use-rack-middleware-in-rails-for-auto-completion\/"},"modified":"2021-06-07T07:24:29","modified_gmt":"2021-06-07T07:24:29","slug":"como-utilizar-middleware-de-rack-en-rieles-para-autocompletar","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/es\/blog\/gestion\/como-utilizar-middleware-de-rack-en-rieles-para-autocompletar\/","title":{"rendered":"\u00bfC\u00f3mo utilizar rack middleware en rieles para autocompletado?"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"6489\" class=\"elementor elementor-6489\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-266fe932 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"266fe932\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-69f67138\" data-id=\"69f67138\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-79e902b4 elementor-widget elementor-widget-text-editor\" data-id=\"79e902b4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: justify;\">En las aplicaciones web modernas de hoy en d\u00eda, la finalizaci\u00f3n autom\u00e1tica y las sugerencias autom\u00e1ticas son muy comunes, desde aplicaciones peque\u00f1as hasta aplicaciones muy grandes, atender m\u00faltiples solicitudes simult\u00e1neamente con una respuesta r\u00e1pida del servidor es muy importante para que la experiencia del usuario sea mejor y m\u00e1s agradable.<\/p>\n<p style=\"text-align: justify;\"><strong> Aqu\u00ed es donde entra en escena el middleware de rack.<\/strong><\/p>\n\n<h5 style=\"text-align: justify;\"><strong>\u00bfQu\u00e9 es el middleware en rack?<\/strong>?<\/h5>\n<p style=\"text-align: justify;\">En t\u00e9rminos simples, un middleware Rack nos permite hacer cosas antes o despu\u00e9s en una aplicaci\u00f3n rack. El middleware de rack se inicializa mediante una aplicaci\u00f3n de rack y debe responder a un m\u00e9todo de llamada.<\/p>\n<p style=\"text-align: justify;\">El middleware de rack puede adem\u00e1s ceder el control a otro middleware de rack o simplemente responder con un c\u00f3digo de respuesta, tipo de contenido y cuerpo.<\/p>\n<p style=\"text-align: justify;\">1 [200, {&#039;Tipo de contenido&#039; =&gt; &#039;texto\/html&#039;},[&#039;Hola Web&#039;]]<\/p>\n\n<h5 style=\"text-align: justify;\"><strong>\u00bfC\u00f3mo puedes usar esto en una aplicaci\u00f3n Rails?<\/strong>?<\/h5>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.railscarma.com\/es\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Rieles<\/strong><\/a> ya tiene un conjunto predefinido de middlewares Rack para almacenamiento en cach\u00e9, manejo de sesiones, etc., puede ver los middlewares actuales ejecutando rake middleware.<\/p>\n<p style=\"text-align: justify;\">Aparte de esto, Rails tambi\u00e9n proporciona una excelente manera de agregar su propio middleware Rack a su aplicaci\u00f3n. Usar un middleware Rack para manejar las funciones de autocompletar es fant\u00e1stico, ya que proporciona un ligero aumento de rendimiento en comparaci\u00f3n con manejar la solicitud en un controlador Rails.<\/p>\n<p style=\"text-align: justify;\">Entonces, veamos algo de c\u00f3digo sobre c\u00f3mo lograr esto. Requisito \u2013 El usuario debe estar autenticado \u2013 Responder con json con el resultado de la consulta \u2013 Manejar la respuesta del lado del cliente con javascript.<\/p>\n<p style=\"text-align: justify;\">Ruby Rack Middleware: cree un directorio para middlewares en su aplicaci\u00f3n Rails mkdir app\/middleware.<\/p>\n<p style=\"text-align: justify;\">Crear un nuevo archivo app\/middleware\/auto_completer.rb clase AutoCompleter def inicializar(aplicaci\u00f3n) @app = app end def call(env) @request = Rack::Request.new(env) if env[\u201cPATH_INFO\u201d] == \u201c \/autocompletar\u201d sesi\u00f3n = @request.env[&#039;rack.session&#039;] params = @request.params si sesi\u00f3n &amp;&amp; sesi\u00f3n[\u201cuser_id\u201d].presente? usuarios = Usuario.select(\u201cid, nombre\u201d).like(params[\u201cq\u201d]) [200, {\u201cTipo de contenido\u201d =&gt; \u201caplicaci\u00f3n\/json\u201d}, [usuarios.to_json]] m\u00e1s [404, {\u201cContent-Type\u201d =&gt; \u201ctext\/html\u201d}, [\u201cNot Found\u201d]] end else @app.call(env) end end end.<\/p>\n<p style=\"text-align: justify;\">El c\u00f3digo anterior se inicializa con una instancia de la aplicaci\u00f3n rack y luego se entrega el control al m\u00e9todo de llamada. En el m\u00e9todo de llamada, verificamos si la ruta de la solicitud coincide con el autocompletado. Luego verificamos la sesi\u00f3n, encontramos usuarios coincidentes y devolvemos un json con una respuesta 200.<\/p>\n<p style=\"text-align: justify;\">Si la solicitud no coincide con la ruta de solicitud de autocompletar, entregamos el control al otro middleware del rack. Edite su config\/application.rb para configurar Rails para que elija el nuevo middleware<\/p>\n<p style=\"text-align: justify;\">config.middleware.insert_after ActionDispatch::Session::CookieStore, \u201cAutocompletador\u201d<\/p>\n<p style=\"text-align: justify;\">Esto le dice a Rails que inserte el nuevo middleware que hemos creado despu\u00e9s del middleware de sesi\u00f3n. Ejecute el comando nuevamente para ver que el nuevo middleware se agreg\u00f3 despu\u00e9s<\/p>\n<p style=\"text-align: justify;\">ActionDispatch::Session::CookieStore middleware rake<\/p>\n<p style=\"text-align: justify;\">Inicie su servidor Rails y vaya a localhost:3000\/autocomplete?q=h<\/p>\n<p style=\"text-align: justify;\">Respuesta esperada [{\u201cid\u201d:2\u201d,nombre\u201d:\u201dHarry\u201d},{\u201cid\u201d:4\u201d,nombre\u201d:\u201dHarold\u201d}]<\/p>\n<p style=\"text-align: justify;\">Javascript Usaremos el complemento jquery-ui para el autocompletado. Incluya jquery-ui en activos\/javascript\/application.js<\/p>\n<p style=\"text-align: justify;\">Agregue JavaScript a activos\/javascript\/application.js para realizar la solicitud de autocompletar<\/p>\n<p style=\"text-align: justify;\">$(function() { $.ui.autocomplete.prototype._renderItem = funci\u00f3n (ul, art\u00edculo) { etiqueta = item.name.replace(new RegExp(\u201c(?![^&amp;;]+;)(?!&lt; [^&lt;&gt;]*)(\u201d + $.ui.autocomplete.escapeRegex(este.t\u00e9rmino) + \u201c)(?![^&lt;&gt;]*&gt;)(?![^&amp;;]+;)\u201d, \u201c gi\u201d), \u201c<strong>$1<\/strong>\u201c); devolver $(\u201c<\/p>\n\n<ul style=\"text-align: justify;\">\n \t<li>\u201c) .data(\u201citem.autocomplete\u201d, item) .append(\u201c\u201d + etiqueta + \u201c\u201d) .appendTo(ul); };<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">$( \u201c#autocomplete\u201d).autocomplete({ fuente: funci\u00f3n(req,res){ $.getJSON(\u201c\/autocomplete\u201d, { q : req.term }, res) }, minLength: 1, seleccione: funci\u00f3n( evento, ui ) { $(\u201c#selected\u201d).append(\u201d Id: \u201d + ui.item.id + \u201d Nombre: \u201d + ui.item.name + \u201c\u201d); } }); });<\/p>\n<p style=\"text-align: justify;\">El primer fragmento de c\u00f3digo parchea el m\u00e9todo _renderItem en el complemento de autocompletar jQuery-ui para usar el formato json que enviamos desde el servidor.<\/p>\n<p style=\"text-align: justify;\">La segunda parte es bastante sencilla, donde conectamos la llamada de autocompletar a una identificaci\u00f3n de elemento html en el DOM.<\/p>\n<p style=\"text-align: justify;\">Observe que hemos utilizado &quot;q&quot; como nombre del par\u00e1metro de consulta en lugar del par\u00e1metro predeterminado &quot;t\u00e9rmino&quot;.<\/p>\n<p style=\"text-align: justify;\">Controlador de rieles y vista<\/p>\n<p style=\"text-align: justify;\">Generar un nuevo controlador. Los rieles del andamio generan un \u00edndice del tablero del controlador.<\/p>\n<p style=\"text-align: justify;\">Editar una nueva plantilla dash\/index.html.erb<\/p>\n\n<h1 style=\"text-align: justify;\"><span style=\"font-size: medium;\">Aplicaci\u00f3n Todo<\/span><\/h1>\n<p style=\"text-align: justify;\">&lt;<\/p>\n<p style=\"text-align: justify;\">p&gt;Autocompletar<\/p>\n<p style=\"text-align: justify;\"><code><span style=\"color: #0000bb;\">&lt;?php\n<\/span><\/code><code><span style=\"color: #007700;\">= <\/span><\/code><code><span style=\"color: #0000bb;\">etiqueta_campo_texto <\/span><\/code><code><span style=\"color: #007700;\">:<\/span><\/code><code><span style=\"color: #0000bb;\">ID_usuario<\/span><\/code><code><span style=\"color: #007700;\">, <\/span><\/code><code><span style=\"color: #0000bb;\">nulo<\/span><\/code><code><span style=\"color: #007700;\">, :<\/span><\/code><code><span style=\"color: #0000bb;\">identificaci\u00f3n <\/span><\/code><code><span style=\"color: #007700;\">=&gt; <\/span><\/code><code><span style=\"color: #dd0000;\">&quot;autocompletar&quot; <\/span><\/code><code><span style=\"color: #007700;\">-\n<\/span><\/code><code><span style=\"color: #0000bb;\">?&gt;<\/span><\/code><\/p>\n<p style=\"text-align: justify;\">Inicie el servidor y vaya <a href=\"http:\/\/localhost:3000\/dash\">http:\/\/localhost:3000\/dash<\/a><\/p>\n<a href=\"\/es\/contactenos\/\">P\u00f3ngase en contacto con nosotros.<\/a>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-670da464 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"670da464\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-14dcfbdc\" data-id=\"14dcfbdc\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1ee25b68 elementor-widget elementor-widget-heading\" data-id=\"1ee25b68\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Suscr\u00edbete para recibir las \u00faltimas actualizaciones<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-168e791d elementor-widget elementor-widget-shortcode\" data-id=\"168e791d\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"cargador\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"d7f7626ab9\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"Direcci\u00f3n de correo electr\u00f3nico\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"Nombre\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"Suscribir\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"es\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Art\u00edculos Relacionados<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"gema kaminari\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n        Gema Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"por qu\u00e9 contratar desarrolladores de Ruby on Rails en 2022\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n        \u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/importancia-de-la-arquitectura-de-software-en-el-desarrollo-de-software-empresarial\/?related_post_from=36250\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/importancia-de-la-arquitectura-de-software-en-el-desarrollo-de-software-empresarial\/?related_post_from=36250\">\r\n        Importancia de la arquitectura de software en el desarrollo de software empresarial  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/ruby-ide-las-mejores-ideas-para-el-desarrollo-de-ruby-on-rails\/?related_post_from=36125\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"MEJORES IDES PARA EL DESARROLLO DE RUBY ON RAILS\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/ruby-ide-las-mejores-ideas-para-el-desarrollo-de-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>In today&#8217;s modern web applications auto completion\/ auto suggestions are very common right from a small to very large applications, serving up multiple requests simultaneously with quick response from the server is very important to make the user experience better and enjoyable. Here is where rack middleware comes in the picture. What is Rack Middleware? &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ruby-regex-match-guide-with-examples\/\"> <span class=\"screen-reader-text\">Ruby Regex Match Guide (2026) con Ejemplos<\/span> Leer m\u00e1s \u00bb<\/a><\/p>","protected":false},"author":1,"featured_media":32115,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[385],"tags":[540,591,592,389,381,382,383],"class_list":["post-6489","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-management","tag-agile-rails-development","tag-middleware","tag-middleware-in-rails","tag-rails","tag-rails-developers","tag-ruby-on-rails","tag-ruby-on-rails-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Use Rack Middleware in Rails For Auto Completion - RailsCarma Blog<\/title>\n<meta name=\"description\" content=\"A Rack middleware to handle auto completes is great, as it gives you a slight performance boost when compared to handling the request in a Rails controller.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/es\/blog\/gestion\/como-utilizar-middleware-de-rack-en-rieles-para-autocompletar\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Use Rack Middleware in Rails For Auto Completion - RailsCarma Blog\" \/>\n<meta property=\"og:description\" content=\"A Rack middleware to handle auto completes is great, as it gives you a slight performance boost when compared to handling the request in a Rails controller.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/es\/blog\/gestion\/como-utilizar-middleware-de-rack-en-rieles-para-autocompletar\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2014-09-05T04:52:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-07T07:24:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"How To Use Rack Middleware In Rails For Auto Completion?\",\"datePublished\":\"2014-09-05T04:52:31+00:00\",\"dateModified\":\"2021-06-07T07:24:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/\"},\"wordCount\":683,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg\",\"keywords\":[\"agile rails development\",\"Middleware\",\"Middleware In Rails\",\"rails\",\"rails developers\",\"Ruby on rails\",\"ruby on rails development\"],\"articleSection\":[\"Articles on Management\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/\",\"name\":\"How to Use Rack Middleware in Rails For Auto Completion - RailsCarma Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg\",\"datePublished\":\"2014-09-05T04:52:31+00:00\",\"dateModified\":\"2021-06-07T07:24:29+00:00\",\"description\":\"A Rack middleware to handle auto completes is great, as it gives you a slight performance boost when compared to handling the request in a Rails controller.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How To Use Rack Middleware In Rails For Auto Completion?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo utilizar Rack Middleware en Rails para autocompletado - Blog RailsCarma","description":"Un middleware de Rack para manejar las funciones de autocompletar es fant\u00e1stico, ya que proporciona un ligero aumento de rendimiento en comparaci\u00f3n con el manejo de la solicitud en un controlador Rails.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.railscarma.com\/es\/blog\/gestion\/como-utilizar-middleware-de-rack-en-rieles-para-autocompletar\/","og_locale":"es_ES","og_type":"article","og_title":"How to Use Rack Middleware in Rails For Auto Completion - RailsCarma Blog","og_description":"A Rack middleware to handle auto completes is great, as it gives you a slight performance boost when compared to handling the request in a Rails controller.","og_url":"https:\/\/www.railscarma.com\/es\/blog\/gestion\/como-utilizar-middleware-de-rack-en-rieles-para-autocompletar\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2014-09-05T04:52:31+00:00","article_modified_time":"2021-06-07T07:24:29+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"How To Use Rack Middleware In Rails For Auto Completion?","datePublished":"2014-09-05T04:52:31+00:00","dateModified":"2021-06-07T07:24:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/"},"wordCount":683,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg","keywords":["agile rails development","Middleware","Middleware In Rails","rails","rails developers","Ruby on rails","ruby on rails development"],"articleSection":["Articles on Management"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/","url":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/","name":"C\u00f3mo utilizar Rack Middleware en Rails para autocompletado - Blog RailsCarma","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg","datePublished":"2014-09-05T04:52:31+00:00","dateModified":"2021-06-07T07:24:29+00:00","description":"Un middleware de Rack para manejar las funciones de autocompletar es fant\u00e1stico, ya que proporciona un ligero aumento de rendimiento en comparaci\u00f3n con el manejo de la solicitud en un controlador Rails.","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2014\/09\/How-To-Use-Rack-Middleware-In-Rails-For-Auto-Completion.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"How To Use Rack Middleware In Rails For Auto Completion?"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Empresa de desarrollo Ruby on Rails especializada en desarrollo offshore","description":"RailsCarma es una empresa de desarrollo de Ruby on Rails en Bangalore. Nos especializamos en el desarrollo offshore de Ruby on Rails con sede en EE. UU. e India. Contrate desarrolladores experimentados de Ruby on Rails para disfrutar de la mejor experiencia web.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RielesCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"administraci\u00f3n","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/6489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/comments?post=6489"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/6489\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media\/32115"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media?parent=6489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/categories?post=6489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/tags?post=6489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}