{"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":"come-utilizzare-il-middleware-rack-nei-binari-per-il-completamento-automatico","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/it\/blog\/gestione\/come-utilizzare-il-middleware-rack-nei-binari-per-il-completamento-automatico\/","title":{"rendered":"Come utilizzare il middleware rack in Rails per il completamento automatico?"},"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;\">Nelle moderne applicazioni Web di oggi il completamento automatico\/i suggerimenti automatici sono molto comuni sia per le applicazioni piccole che per quelle molto grandi, soddisfare pi\u00f9 richieste contemporaneamente con una risposta rapida dal server \u00e8 molto importante per rendere l&#039;esperienza dell&#039;utente migliore e piacevole.<\/p>\n<p style=\"text-align: justify;\"><strong> \u00c8 qui che entra in gioco il middleware rack.<\/strong><\/p>\n\n<h5 style=\"text-align: justify;\"><strong>Cos&#039;\u00e8 il middleware rack<\/strong>?<\/h5>\n<p style=\"text-align: justify;\">In termini semplici, un middleware Rack ci consente di eseguire operazioni prima o dopo in un&#039;applicazione rack. Il middleware rack viene inizializzato utilizzando un&#039;applicazione rack e deve rispondere a un metodo di chiamata.<\/p>\n<p style=\"text-align: justify;\">Il middleware rack pu\u00f2 inoltre trasferire il controllo ad altro middleware rack o semplicemente rispondere con un codice di risposta, un tipo di contenuto e un corpo.<\/p>\n<p style=\"text-align: justify;\">1 [200, {&#039;Tipo di contenuto&#039; =&gt; &#039;testo\/html&#039;},[&#039;Ciao Web&#039;]]<\/p>\n\n<h5 style=\"text-align: justify;\"><strong>Come puoi usarlo in un&#039;applicazione Rails<\/strong>?<\/h5>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.railscarma.com\/it\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Rotaie<\/strong><\/a> ha gi\u00e0 un set predefinito di middleware Rack per la memorizzazione nella cache, la gestione delle sessioni, ecc., puoi esaminare i middleware attuali eseguendo il middleware rake.<\/p>\n<p style=\"text-align: justify;\">Oltre a questo, Rails fornisce anche un ottimo modo per aggiungere il proprio middleware Rack alla tua applicazione. L&#039;utilizzo di un middleware Rack per gestire i completamenti automatici \u00e8 ottimo, poich\u00e9 offre un leggero aumento delle prestazioni rispetto alla gestione della richiesta in un controller Rails.<\/p>\n<p style=\"text-align: justify;\">Quindi diamo un&#039;occhiata ad alcuni codici su come ottenere questo risultato. Requisito \u2013 L&#039;utente deve essere autenticato \u2013 Rispondere con json con il risultato della query \u2013 Gestire la risposta lato client con javascript.<\/p>\n<p style=\"text-align: justify;\">Ruby Rack Middleware: crea una directory per i middleware nella tua applicazione rails mkdir app\/middleware.<\/p>\n<p style=\"text-align: justify;\">Crea un nuovo file app\/middleware\/auto_completer.rb class AutoCompleter def inizializza(app) @app = app end def call(env) @request = Rack::Request.new(env) if env[\u201cPATH_INFO\u201d] == \u201c \/autocomplete\u201d sessione = @request.env[&#039;rack.session&#039;] params = @request.params se sessione &amp;&amp; session[\u201cuser_id\u201d].presente? users = User.select(&quot;id, name&quot;).like(params[&quot;q&quot;]) [200, {&quot;Content-Type&quot; =&gt; &quot;application\/json&quot;}, [users.to_json]] else [404, {&quot;Tipo di contenuto&quot; =&gt; &quot;testo\/html&quot;}, [&quot;Non trovato&quot;]] end else @app.call(env) end end end.<\/p>\n<p style=\"text-align: justify;\">Il codice precedente viene inizializzato con un&#039;istanza dell&#039;applicazione rack, quindi passa il controllo al metodo di chiamata. Nel metodo di chiamata controlliamo se il percorso della richiesta corrisponde al completamento automatico, quindi controlliamo la sessione e troviamo gli utenti corrispondenti e restituiamo un json con una risposta 200.<\/p>\n<p style=\"text-align: justify;\">Se la richiesta non corrisponde al percorso della richiesta di completamento automatico, trasferiamo il controllo all&#039;altro middleware del rack. Modifica il tuo config\/application.rb per configurare Rails per adottare il nuovo middleware<\/p>\n<p style=\"text-align: justify;\">config.middleware.insert_after ActionDispatch::Session::CookieStore, \u201cCompleter automatico\u201d<\/p>\n<p style=\"text-align: justify;\">Questo dice a Rails di inserire il nuovo middleware che abbiamo creato dopo il middleware della sessione. Esegui di nuovo il comando per vedere il nuovo middleware aggiunto dopo<\/p>\n<p style=\"text-align: justify;\">Middleware rake ActionDispatch::Session::CookieStore<\/p>\n<p style=\"text-align: justify;\">Avvia il tuo server Rails e vai su localhost:3000\/autocomplete?q=h<\/p>\n<p style=\"text-align: justify;\">Risposta prevista [{\u201cid\u201d:2,\u201dname\u201d:\u201dHarry\u201d},{\u201cid\u201d:4,\u201dname\u201d:\u201dHarold\u201d}]<\/p>\n<p style=\"text-align: justify;\">Javascript Utilizzeremo il plugin jquery-ui per il completamento automatico. Includi jquery-ui in asset\/javascript\/application.js<\/p>\n<p style=\"text-align: justify;\">Aggiungi JavaScript a asset\/javascript\/application.js per effettuare la richiesta di completamento automatico<\/p>\n<p style=\"text-align: justify;\">$(function() { $.ui.autocomplete.prototype._renderItem = function (ul, item) { label = item.name.replace(new RegExp(\u201c(?![^&amp;;]+;)(?!&lt; [^&lt;&gt;]*)(\u201d + $.ui.autocomplete.escapeRegex(this.term) + \u201c)(?![^&lt;&gt;]*&gt;)(?![^&amp;;]+;)\u201d, \u201c gi\u201d), \u201c<strong>$1<\/strong>\u201c); restituire $(\u201c<\/p>\n\n<ul style=\"text-align: justify;\">\n \t<li>\u201c) .data(\u201citem.autocomplete\u201d, articolo) .append(\u201c\u201d + label + \u201c\u201d) .appendTo(ul); };<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">$( \u201c#autocomplete\u201d ).autocomplete({ source: function(req,res){ $.getJSON(\u201c\/autocomplete\u201d, { q : req.term }, res) }, minLength: 1, select: function( event, ui ) { $(\u201c#selezionato\u201d).append(\u201d Id: \u201d + ui.item.id + \u201d Nome: \u201d + ui.item.name + \u201c\u201d); } }); });<\/p>\n<p style=\"text-align: justify;\">La prima parte di codice patcha il metodo _renderItem nel plugin di completamento automatico jQuery-ui per utilizzare il formato json che stiamo inviando dal server.<\/p>\n<p style=\"text-align: justify;\">La seconda parte \u00e8 piuttosto semplice in cui colleghiamo la chiamata di completamento automatico a un ID di elemento html nel DOM.<\/p>\n<p style=\"text-align: justify;\">Nota che abbiamo utilizzato &quot;q&quot; come nome del parametro di query invece del parametro &quot;term&quot; predefinito.<\/p>\n<p style=\"text-align: justify;\">Controller e vista delle rotaie<\/p>\n<p style=\"text-align: justify;\">Genera un nuovo controller, i binari dell&#039;impalcatura generano l&#039;indice del trattino del controller<\/p>\n<p style=\"text-align: justify;\">Modifica un nuovo modello dash\/index.html.erb<\/p>\n\n<h1 style=\"text-align: justify;\"><span style=\"font-size: medium;\">Applicazione Todo<\/span><\/h1>\n<p style=\"text-align: justify;\">&lt;<\/p>\n<p style=\"text-align: justify;\">p&gt;Completamento automatico<\/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;\">text_field_tag <\/span><\/code><code><span style=\"color: #007700;\">:<\/span><\/code><code><span style=\"color: #0000bb;\">ID utente<\/span><\/code><code><span style=\"color: #007700;\">, <\/span><\/code><code><span style=\"color: #0000bb;\">zero<\/span><\/code><code><span style=\"color: #007700;\">, :<\/span><\/code><code><span style=\"color: #0000bb;\">id <\/span><\/code><code><span style=\"color: #007700;\">=&gt; <\/span><\/code><code><span style=\"color: #dd0000;\">&quot;completamento automatico&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;\">Avvia il server e vai a <a href=\"http:\/\/localhost:3000\/dash\">http:\/\/localhost:3000\/dash<\/a><\/p>\n<a href=\"\/it\/contattaci\/\">Mettiti in contatto con noi.<\/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\">Iscriviti per gli ultimi aggiornamenti<\/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=\"caricatore\"><\/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=\"Indirizzo e-mail\">\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=\"Nome\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"sottoscrivi\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"it\"\/><\/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\">Articoli correlati<\/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=\"Gemma Kaminari\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/gemma-di-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=\"gemma di 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=\"Gemma Kaminari\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/gemma-di-kaminari\/?related_post_from=37277\">\r\n        Gemma Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/perche-assumere-sviluppatori-di-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=\"perch\u00e9 assumere sviluppatori di Ruby on Rails nel 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=\"Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/perche-assumere-sviluppatori-di-ruby-on-rails\/?related_post_from=30627\">\r\n        Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Importanza dell&#039;architettura software nello sviluppo di software aziendale\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/importanza-dellarchitettura-software-nello-sviluppo-di-software-aziendale\/?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=\"Importanza dell&#039;architettura software nello sviluppo di software aziendale\" 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=\"Importanza dell&#039;architettura software nello sviluppo di software aziendale\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/importanza-dellarchitettura-software-nello-sviluppo-di-software-aziendale\/?related_post_from=36250\">\r\n        Importanza dell&#039;architettura software nello sviluppo di software aziendale  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: i migliori IDE per lo sviluppo di Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/ruby-ide-le-migliori-idee-per-lo-sviluppo-di-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=\"LE MIGLIORI IDEE PER LO SVILUPPO DI 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: i migliori IDE per lo sviluppo di Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/ruby-ide-le-migliori-idee-per-lo-sviluppo-di-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE: i migliori IDE per lo sviluppo di 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>Nelle moderne applicazioni web, il completamento automatico e i suggerimenti automatici sono molto comuni, dalle applicazioni pi\u00f9 piccole a quelle pi\u00f9 grandi. Servire pi\u00f9 richieste contemporaneamente con una risposta rapida da parte del server \u00e8 molto importante per rendere l'esperienza dell'utente migliore e piacevole. \u00c8 qui che entra in gioco il rack middleware. Che cos'\u00e8 il rack middleware? ...<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/it\/blog\/ruby-regex-match-guide-with-examples\/\"> <span class=\"screen-reader-text\">Ruby Regex Match Guide (2026) with Examples<\/span> Leggi altro \"<\/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\/it\/blog\/gestione\/come-utilizzare-il-middleware-rack-nei-binari-per-il-completamento-automatico\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/blog\/gestione\/come-utilizzare-il-middleware-rack-nei-binari-per-il-completamento-automatico\/\" \/>\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=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuti\" \/>\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\":\"it-IT\",\"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\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@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\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@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\":\"it-IT\",\"@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":"Come utilizzare il middleware rack in Rails per il completamento automatico - Blog RailsCarma","description":"Un middleware Rack per gestire i completamenti automatici \u00e8 ottimo, poich\u00e9 offre un leggero aumento delle prestazioni rispetto alla gestione della richiesta in un controller 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\/it\/blog\/gestione\/come-utilizzare-il-middleware-rack-nei-binari-per-il-completamento-automatico\/","og_locale":"it_IT","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\/it\/blog\/gestione\/come-utilizzare-il-middleware-rack-nei-binari-per-il-completamento-automatico\/","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":{"Scritto da":"admin","Tempo di lettura stimato":"3 minuti"},"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":"it-IT","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":"Come utilizzare il middleware rack in Rails per il completamento automatico - 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 Rack per gestire i completamenti automatici \u00e8 ottimo, poich\u00e9 offre un leggero aumento delle prestazioni rispetto alla gestione della richiesta in un controller Rails.","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@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 - Societ\u00e0 di sviluppo Ruby on Rails specializzata nello sviluppo offshore","description":"RailsCarma \u00e8 una societ\u00e0 di sviluppo Ruby on Rails a Bangalore. Siamo specializzati nello sviluppo offshore di Ruby on Rails con sede negli Stati Uniti e in India. Assumi sviluppatori esperti di Ruby on Rails per la migliore esperienza 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":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@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":"amministratore","image":{"@type":"ImageObject","inLanguage":"it-IT","@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\/it\/wp-json\/wp\/v2\/posts\/6489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/comments?post=6489"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/posts\/6489\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/media\/32115"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/media?parent=6489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/categories?post=6489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/tags?post=6489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}