{"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":"comment-utiliser-le-middleware-rack-dans-les-rails-pour-la-completion-automatique","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/fr\/blog\/gestion\/comment-utiliser-le-middleware-rack-dans-les-rails-pour-la-completion-automatique\/","title":{"rendered":"Comment utiliser le middleware rack dans Rails pour la saisie semi-automatique\u00a0?"},"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;\">Dans les applications Web modernes d&#039;aujourd&#039;hui, la saisie semi-automatique\/les suggestions automatiques sont tr\u00e8s courantes, qu&#039;il s&#039;agisse d&#039;applications petites ou tr\u00e8s grandes, il est tr\u00e8s important de r\u00e9pondre simultan\u00e9ment \u00e0 plusieurs requ\u00eates avec une r\u00e9ponse rapide du serveur pour rendre l&#039;exp\u00e9rience utilisateur meilleure et plus agr\u00e9able.<\/p>\n<p style=\"text-align: justify;\"><strong> C\u2019est ici qu\u2019intervient le middleware de rack.<\/strong><\/p>\n\n<h5 style=\"text-align: justify;\"><strong>Qu&#039;est-ce que le middleware rackable ?<\/strong>?<\/h5>\n<p style=\"text-align: justify;\">En termes simples, un middleware Rack nous permet de faire des choses avant ou apr\u00e8s dans une application rack. Le middleware rack est initialis\u00e9 \u00e0 l\u2019aide d\u2019une application rack et doit r\u00e9pondre \u00e0 une m\u00e9thode d\u2019appel.<\/p>\n<p style=\"text-align: justify;\">Le middleware de rack peut en outre confier le contr\u00f4le \u00e0 un autre middleware de rack ou simplement r\u00e9pondre avec un code de r\u00e9ponse, un type de contenu et un corps.<\/p>\n<p style=\"text-align: justify;\">1 [200, {&#039;Content-type&#039; =&gt; &#039;text\/html&#039;},[&#039;Bonjour Web&#039;]]<\/p>\n\n<h5 style=\"text-align: justify;\"><strong>Comment pouvez-vous l&#039;utiliser dans une application Rails<\/strong>?<\/h5>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.railscarma.com\/fr\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Des rails<\/strong><\/a> dispose d\u00e9j\u00e0 d&#039;un ensemble pr\u00e9d\u00e9fini de middlewares Rack pour la mise en cache, la gestion des sessions, etc., vous pouvez consulter les middlewares actuels en ex\u00e9cutant le middleware rake.<\/p>\n<p style=\"text-align: justify;\">En dehors de cela, Rails constitue \u00e9galement un excellent moyen d&#039;ajouter votre propre middleware Rack \u00e0 votre application. L&#039;utilisation d&#039;un middleware Rack pour g\u00e9rer la saisie semi-automatique est excellente, car elle vous donne une l\u00e9g\u00e8re am\u00e9lioration des performances par rapport \u00e0 la gestion de la requ\u00eate dans un contr\u00f4leur Rails.<\/p>\n<p style=\"text-align: justify;\">Examinons donc un peu de code pour savoir comment y parvenir. Exigence \u2013 L&#039;utilisateur doit \u00eatre authentifi\u00e9 \u2013 R\u00e9pondre avec json avec le r\u00e9sultat de la requ\u00eate \u2013 G\u00e9rer la r\u00e9ponse c\u00f4t\u00e9 client avec javascript.<\/p>\n<p style=\"text-align: justify;\">Ruby Rack Middleware - Cr\u00e9ez un r\u00e9pertoire pour les middlewares dans votre application rails mkdir app\/middleware.<\/p>\n<p style=\"text-align: justify;\">Cr\u00e9er un nouveau fichier app\/middleware\/auto_completer.rb class AutoCompleter def initialize(app) @app = app end def call(env) @request = Rack::Request.new(env) if env[&quot;PATH_INFO&quot;] == &quot; \/autocomplete&quot; session = @request.env[&#039;rack.session&#039;] params = @request.params if session &amp;&amp; session[&quot;user_id&quot;].present? 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;Content-Type&quot; =&gt; &quot;text\/html&quot;}, [&quot;Not Found&quot;]] end else @app.call(env) end end end.<\/p>\n<p style=\"text-align: justify;\">Le code ci-dessus est initialis\u00e9 avec une instance d&#039;application rack, puis transmet le contr\u00f4le \u00e0 la m\u00e9thode d&#039;appel. Dans la m\u00e9thode d&#039;appel, nous v\u00e9rifions si le chemin de la requ\u00eate correspond \u00e0 la saisie semi-automatique. Nous v\u00e9rifions ensuite la session, trouvons les utilisateurs correspondants et renvoyons un json avec une r\u00e9ponse 200.<\/p>\n<p style=\"text-align: justify;\">Si la requ\u00eate ne correspond pas au chemin de la requ\u00eate de saisie semi-automatique, nous passons le contr\u00f4le \u00e0 l&#039;autre middleware du rack. Modifiez votre config\/application.rb pour configurer Rails afin qu&#039;il r\u00e9cup\u00e8re le nouveau middleware<\/p>\n<p style=\"text-align: justify;\">config.middleware.insert_after ActionDispatch :: Session :: CookieStore, \u00ab\u00a0AutoCompleter\u00a0\u00bb<\/p>\n<p style=\"text-align: justify;\">Cela indique \u00e0 Rails d&#039;ins\u00e9rer le nouveau middleware que nous avons cr\u00e9\u00e9 apr\u00e8s le middleware de session. Ex\u00e9cutez \u00e0 nouveau la commande pour voir que le nouveau middleware a \u00e9t\u00e9 ajout\u00e9 apr\u00e8s<\/p>\n<p style=\"text-align: justify;\">ActionDispatch :: Session :: Middleware de r\u00e2teau CookieStore<\/p>\n<p style=\"text-align: justify;\">D\u00e9marrez votre serveur Rails et acc\u00e9dez \u00e0 localhost:3000\/autocomplete?q=h<\/p>\n<p style=\"text-align: justify;\">R\u00e9ponse attendue [{&quot;id&quot;:2,&quot;name&quot;:&quot;Harry&quot;},{&quot;id&quot;:4,&quot;name&quot;:&quot;Harold&quot;}]<\/p>\n<p style=\"text-align: justify;\">Javascript Nous utiliserons le plugin jquery-ui pour la saisie semi-automatique. Inclure jquery-ui dans actifs\/javascript\/application.js<\/p>\n<p style=\"text-align: justify;\">Ajoutez JavaScript \u00e0 assets\/javascript\/application.js pour effectuer la demande de saisie semi-automatique<\/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&quot;), &quot;<strong>$1<\/strong>&quot;\u00a0); retourner $(&quot;<\/p>\n\n<ul style=\"text-align: justify;\">\n \t<li>&quot;) .data(&quot;item.autocomplete&quot;, item) .append(&quot;&quot; + \u00e9tiquette + &quot;&quot;) .appendTo(ul); }\u00a0;<\/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#selected\u201d).append(\u201d Id : \u201d + ui.item.id + \u201d Nom : \u201d + ui.item.name + \u201c\u201d); } }); });<\/p>\n<p style=\"text-align: justify;\">Le premier morceau de code corrige la m\u00e9thode _renderItem dans le plugin de saisie semi-automatique jQuery-ui pour utiliser le format json que nous envoyons depuis le serveur.<\/p>\n<p style=\"text-align: justify;\">La deuxi\u00e8me partie est assez simple : nous connectons l&#039;appel de saisie semi-automatique \u00e0 un identifiant d&#039;\u00e9l\u00e9ment HTML dans le DOM.<\/p>\n<p style=\"text-align: justify;\">Notez que nous avons utilis\u00e9 \u00ab q \u00bb comme nom du param\u00e8tre de requ\u00eate au lieu du param\u00e8tre \u00ab term \u00bb par d\u00e9faut.<\/p>\n<p style=\"text-align: justify;\">Contr\u00f4leur et vue Rails<\/p>\n<p style=\"text-align: justify;\">G\u00e9n\u00e9rer un nouveau contr\u00f4leur, les rails d&#039;\u00e9chafaudage g\u00e9n\u00e8rent un index de tableau de bord du contr\u00f4leur<\/p>\n<p style=\"text-align: justify;\">Modifier un nouveau mod\u00e8le dash\/index.html.erb<\/p>\n\n<h1 style=\"text-align: justify;\"><span style=\"font-size: medium;\">Application Todo<\/span><\/h1>\n<p style=\"text-align: justify;\">&lt;<\/p>\n<p style=\"text-align: justify;\">p&gt;Saisie automatique<\/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 de l&#039;utilisateur<\/span><\/code><code><span style=\"color: #007700;\">, <\/span><\/code><code><span style=\"color: #0000bb;\">n\u00e9ant<\/span><\/code><code><span style=\"color: #007700;\">, :<\/span><\/code><code><span style=\"color: #0000bb;\">identifiant <\/span><\/code><code><span style=\"color: #007700;\">=&gt; <\/span><\/code><code><span style=\"color: #dd0000;\">&quot;Saisie automatique&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;\">D\u00e9marrez le serveur et allez <a href=\"http:\/\/localhost:3000\/dash\">http:\/\/localhost:3000\/dash<\/a><\/p>\n<a href=\"\/fr\/contactez-nous\/\">Prenez contact avec nous.<\/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\">Abonnez-vous pour les derni\u00e8res mises \u00e0 jour<\/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=\"chargeur\"><\/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=\"d70884f468\">\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=\"Adresse 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=\"Nom\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"S&#039;abonner\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"fr\"\/><\/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\">Articles Similaires<\/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=\"Gemme de Kaminari\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/joyau-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=\"joyau 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=\"Gemme de Kaminari\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/joyau-kaminari\/?related_post_from=37277\">\r\n        Gemme de Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Pourquoi engager des d\u00e9veloppeurs Ruby on Rails en 2026 ?\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/pourquoi-embaucher-des-developpeurs-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=\"pourquoi embaucher des d\u00e9veloppeurs 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=\"Pourquoi engager des d\u00e9veloppeurs Ruby on Rails en 2026 ?\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/pourquoi-embaucher-des-developpeurs-ruby-on-rails\/?related_post_from=30627\">\r\n        Pourquoi engager des d\u00e9veloppeurs 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=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/importance-de-larchitecture-logicielle-dans-le-developpement-de-logiciels-dentreprise\/?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=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" 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=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/importance-de-larchitecture-logicielle-dans-le-developpement-de-logiciels-dentreprise\/?related_post_from=36250\">\r\n        Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE\u00a0: les meilleurs IDE pour le d\u00e9veloppement Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/ruby-ide-les-meilleures-idees-pour-le-developpement-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=\"MEILLEURES ID\u00c9ES POUR LE D\u00c9VELOPPEMENT 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\u00a0: les meilleurs IDE pour le d\u00e9veloppement Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/ruby-ide-les-meilleures-idees-pour-le-developpement-de-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE\u00a0: les meilleurs IDE pour le d\u00e9veloppement 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\/fr\/blog\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/\"> <span class=\"screen-reader-text\">Comment construire une plateforme SaaS \u00e9volutive en utilisant Ruby on Rails<\/span> Lire la suite \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\/fr\/blog\/gestion\/comment-utiliser-le-middleware-rack-dans-les-rails-pour-la-completion-automatique\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/blog\/gestion\/comment-utiliser-le-middleware-rack-dans-les-rails-pour-la-completion-automatique\/\" \/>\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=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\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\":\"fr-FR\",\"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\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@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\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@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\":\"fr-FR\",\"@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":"Comment utiliser le middleware rack dans Rails pour la saisie semi-automatique - RailsCarma Blog","description":"Un middleware Rack pour g\u00e9rer la saisie semi-automatique est excellent, car il vous donne une l\u00e9g\u00e8re am\u00e9lioration des performances par rapport \u00e0 la gestion de la requ\u00eate dans un contr\u00f4leur 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\/fr\/blog\/gestion\/comment-utiliser-le-middleware-rack-dans-les-rails-pour-la-completion-automatique\/","og_locale":"fr_FR","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\/fr\/blog\/gestion\/comment-utiliser-le-middleware-rack-dans-les-rails-pour-la-completion-automatique\/","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":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"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":"fr-FR","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":"Comment utiliser le middleware rack dans Rails pour la saisie semi-automatique - 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":"Un middleware Rack pour g\u00e9rer la saisie semi-automatique est excellent, car il vous donne une l\u00e9g\u00e8re am\u00e9lioration des performances par rapport \u00e0 la gestion de la requ\u00eate dans un contr\u00f4leur Rails.","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/management\/how-to-use-rack-middleware-in-rails-for-auto-completion\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@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 - Soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails sp\u00e9cialis\u00e9e dans le d\u00e9veloppement offshore","description":"RailsCarma est une soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails \u00e0 Bangalore. Nous sommes sp\u00e9cialis\u00e9s dans le d\u00e9veloppement offshore Ruby on Rails, bas\u00e9s aux \u00c9tats-Unis et en Inde. Embauchez des d\u00e9veloppeurs Ruby on Rails exp\u00e9riment\u00e9s pour une exp\u00e9rience Web ultime.","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":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@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":"administrateur","image":{"@type":"ImageObject","inLanguage":"fr-FR","@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\/fr\/wp-json\/wp\/v2\/posts\/6489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/comments?post=6489"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts\/6489\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/media\/32115"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/media?parent=6489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/categories?post=6489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/tags?post=6489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}