{"id":26462,"date":"2017-03-13T11:14:19","date_gmt":"2017-03-13T11:14:19","guid":{"rendered":"https:\/\/dev.railscarma.com\/decent-exposure-gem-goodbye-repeating-instance-variables\/"},"modified":"2024-01-10T12:54:32","modified_gmt":"2024-01-10T12:54:32","slug":"gema-de-exposicion-decente-adios-variables-de-instancia-repetitivas","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-de-exposicion-decente-adios-variables-de-instancia-repetitivas\/","title":{"rendered":"Decent Exposure Gem - Adi\u00f3s a la repetici\u00f3n de variables de instancia"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"26462\" class=\"elementor elementor-26462\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4c8289d6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4c8289d6\" 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-abe1b56\" data-id=\"abe1b56\" 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-480a99e2 elementor-widget elementor-widget-text-editor\" data-id=\"480a99e2\" 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<h3>Introducci\u00f3n<\/h3>\n<p>Github: <a href=\"https:\/\/github.com\/hashrocket\/decent_exposure\" target=\"_blank\" rel=\"noopener noreferrer\">Gema de exposici\u00f3n decente<\/a><br>\nDecent Exposure nos permite crear variables expuestas que pueden ser utilizadas a trav\u00e9s de las acciones del controlador en lugar de repetir variables de instancia. Las variables expuestas tambi\u00e9n son accesibles desde las vistas y memorizan los valores resultantes. En otras palabras, es una ayuda para crear interfaces declarativas en los controladores.<\/p>\n<h3>Algunos puntos<\/h3>\n<ul>\n<li>Mejorar la encapsulaci\u00f3n<\/li>\n<li>Las variables para las vistas pueden ser visibles en la parte superior del controlador<\/li>\n<li>Compatible con strong_parameters, decoradores<\/li>\n<li>Expone los olores del c\u00f3digo.<\/li>\n<\/ul>\n<p>Eche un vistazo aqu\u00ed: <a href=\"http:\/\/c2.com\/cgi\/wiki?CodeSmell\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/c2.com\/cgi\/wiki?CodeSmell<\/a><\/p>\n<h3>Consejos para jugar con una gema de exposici\u00f3n decente en una aplicaci\u00f3n Rails<\/h3>\n<ul>\n<li>A\u00f1adir gema <strong>exposici\u00f3n_decente<\/strong> al Gemfile y ejecute bundle install<\/li>\n<li>C\u00f3mo utiliza un controlador <strong>exposici\u00f3n_decente<\/strong> parece:<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/01\/Decent-Exposure-Gem.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-26463\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/01\/Decent-Exposure-Gem.png\" alt=\"Gema de exposici\u00f3n decente\" width=\"647\" height=\"461\"><\/a><\/p>\n<ul>\n<li>Por defecto, la exposici\u00f3n Decent se incluy\u00f3 como una forma de prevenir la actualizaci\u00f3n accidental de atributos sensibles del modelo y requiere que todos los params est\u00e9n en la lista blanca. Tiene soporte incorporado para pasar par\u00e1metros fuertes.<\/li>\n<li>El n\u00famero ideal de exposiciones es de dos por controlador.<br>\n(1 -&gt; recurso singular, por ejemplo, art\u00edculo y 2 -&gt; colecciones plurales, por ejemplo, art\u00edculos).<\/li>\n<li>Si la parte superior de la clase del controlador est\u00e1 llena de declaraciones de exposici\u00f3n, dos olores de c\u00f3digo pueden ocurrir como exponer variables que no pueden ser utilizadas en la vista y el controlador con m\u00faltiples responsabilidades.<\/li>\n<li>Podemos utilizar la funci\u00f3n exponer con bloque para decorar el objeto:<br>\nexpose(:item) { |default| ItemDecorator.new(default) }<\/li>\n<li>Si las clases del modelo tienen un espacio de nombres como Blog::Post debemos especificarlo en la llamada a exponer con model:<br>\n<blockquote><p><code>class Blog::PostsController &lt; ControladorDeAplicaci\u00f3n<br>\nexponer(:post, modelo: Blog::Post)<br>\nfin<\/code><\/p><\/blockquote>\n<\/li>\n<\/ul>\n<h3>Algunos recursos<\/h3>\n<p>Cambios en la API:<a href=\"https:\/\/github.com\/hashrocket\/decent_exposure\/wiki\/Api-changes-in-version-3\" target=\"_blank\" rel=\"noopener noreferrer\"> Api Cambios en la nueva versi\u00f3n<\/a><br>\nRailscasts: <a href=\"http:\/\/railscasts.com\/episodes\/259-decent-exposure\" target=\"_blank\" rel=\"noopener noreferrer\">Exposici\u00f3n decente<\/a><br>\nDecoraci\u00f3n decente: <a href=\"https:\/\/github.com\/netguru\/decent_decoration\" target=\"_blank\" rel=\"noopener noreferrer\">Gema Decorativa<\/a><br>\nUn blog: <a href=\"http:\/\/blog.remarkablelabs.com\/2013\/01\/how-to-decrease-coupling-in-your-controllers-views-with-decent_exposure-for-better-maintainability\" target=\"_blank\" rel=\"noopener noreferrer\">C\u00f3mo reducir el acoplamiento en controladores y vistas<\/a><\/p>\n<p>Permanezca atento.<\/p>\n<p>Gracias,<\/p>\n<div class=\"author-info\"><strong>LUBAIB CEEJEY<\/strong><\/div>\n<div class=\"author-info\">Desarrollador Sr. Ruby on Rails&nbsp;<\/div>\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-6ddd1337 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6ddd1337\" 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-51b675fc\" data-id=\"51b675fc\" 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-51d3554a elementor-widget elementor-widget-heading\" data-id=\"51d3554a\" 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-5c4d0739 elementor-widget elementor-widget-shortcode\" data-id=\"5c4d0739\" 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=\"ec95fb1fc4\">\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>Introduction Github: Decent Exposure Gem Decent Exposure allows us to create exposed variables that can be used across the controller&#8217;s actions instead repeating instance variables. Exposed variables are accessible from views as well and memorize the resultant values. In other words, it is a helper for creating declarative interfaces in controllers. Some Points Improving encapsulation &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/es\/blog\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/\"> <span class=\"screen-reader-text\">C\u00f3mo crear una plataforma SaaS escalable con Ruby on Rails<\/span> Leer m\u00e1s \u00bb<\/a><\/p>","protected":false},"author":1,"featured_media":31795,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384],"tags":[],"class_list":["post-26462","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development<\/title>\n<meta name=\"description\" content=\"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create exposed variables that can be used across the controller&#039;s actions instead\" \/>\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\/articulos-tecnicos\/gema-de-exposicion-decente-adios-variables-de-instancia-repetitivas\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"og:description\" content=\"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create exposed variables that can be used across the controller&#039;s actions instead\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-de-exposicion-decente-adios-variables-de-instancia-repetitivas\/\" \/>\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=\"2017-03-13T11:14:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-10T12:54:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.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=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"Decent Exposure Gem &#8211; Goodbye to repeating instance variables\",\"datePublished\":\"2017-03-13T11:14:19+00:00\",\"dateModified\":\"2024-01-10T12:54:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\"},\"wordCount\":299,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\",\"articleSection\":[\"Technical Articles\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\",\"name\":\"Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\",\"datePublished\":\"2017-03-13T11:14:19+00:00\",\"dateModified\":\"2024-01-10T12:54:32+00:00\",\"description\":\"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create exposed variables that can be used across the controller's actions instead\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Decent Exposure Gem &#8211; Goodbye to repeating instance variables\"}]},{\"@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":"Decent Exposure Gem - Adi\u00f3s a la repetici\u00f3n de variables de instancia - RailsCarma - Ruby on Rails Empresa de desarrollo especializada en Offshore","description":"Introducci\u00f3n Github: Decent Exposure Gem Decent Exposure nos permite crear variables expuestas que pueden ser utilizadas a trav\u00e9s de las acciones del controlador en lugar de","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\/articulos-tecnicos\/gema-de-exposicion-decente-adios-variables-de-instancia-repetitivas\/","og_locale":"es_ES","og_type":"article","og_title":"Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","og_description":"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create exposed variables that can be used across the controller's actions instead","og_url":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-de-exposicion-decente-adios-variables-de-instancia-repetitivas\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2017-03-13T11:14:19+00:00","article_modified_time":"2024-01-10T12:54:32+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.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":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"Decent Exposure Gem &#8211; Goodbye to repeating instance variables","datePublished":"2017-03-13T11:14:19+00:00","dateModified":"2024-01-10T12:54:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/"},"wordCount":299,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","articleSection":["Technical Articles"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/","url":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/","name":"Decent Exposure Gem - Adi\u00f3s a la repetici\u00f3n de variables de instancia - RailsCarma - Ruby on Rails Empresa de desarrollo especializada en Offshore","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","datePublished":"2017-03-13T11:14:19+00:00","dateModified":"2024-01-10T12:54:32+00:00","description":"Introducci\u00f3n Github: Decent Exposure Gem Decent Exposure nos permite crear variables expuestas que pueden ser utilizadas a trav\u00e9s de las acciones del controlador en lugar de","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"Decent Exposure Gem &#8211; Goodbye to repeating instance variables"}]},{"@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\/26462","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=26462"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/26462\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media\/31795"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media?parent=26462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/categories?post=26462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/tags?post=26462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}