Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
Cómo usar constantes definidas en javascript en un archivo erb como argumento en el método api de Rails

Estoy tratando de jugar con mi código y he llegado a un

Tengo una etiqueta de script en un archivo erb. Obtengo la zona horaria del navegador y la almaceno en una constante. Quiero usar el valor de la constante en un método API de Rails como argumento, pero aparece el error.

variable local indefinida o método `browser_time_zone' para #

 <script> // this returns Eastern Time (US & Canada) const browser_time_zone = Intl.DateTimeFormat().resolvedOptions().timeZone; const timezone = <%= ActiveSupport::TimeZone::MAPPING.key(browser_time_zone) %> </script>

¿Cómo puedo usar el valor de browser_time_zone como argumento para el método de mapeo de zona horaria? Cualquier ayuda será apreciada

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No creo que pueda hacer lo que quiera, porque la ejecución de Javascript y Ruby ocurre en diferentes momentos (Ruby primero cuando la página se procesa/crea, luego javascript cuando el navegador carga el HTML). En su lugar, podrías intentar algo como esto:

 <script> // this returns Eastern Time (US & Canada) // https://stackoverflow.com/a/28191966/2543424 function getKeyByValue(object, value) { return Object.keys(object).find(key => object[key] === value); } const time_zone_mapping = <%= ActiveSupport::TimeZone::MAPPING.to_json.html_safe %>; const browser_time_zone = Intl.DateTimeFormat().resolvedOptions().timeZone; const timezone = getKeyByValue(time_zone_mapping, browser_time_zone); </script>

Aquí estamos volcando el contenido de ActiveSupport::TimeZone::MAPPING en una nueva variable de javascript en forma de objeto JSON, y luego accediendo a él de la misma manera que intentaba hacer, pero todo a través de Javascript.

Tenga en cuenta que la sintaxis ActiveSupport::TimeZone::MAPPING.to_json.html_safe puede no ser 100% correcta, pero esa es la idea general

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda