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

181
Vistas
Error en la carga dinámica de Rails 7 del archivo javascript

Estoy actualizando una plantilla de Rails a v.7 y me encuentro con un desafío al actualizar las llamadas dinámicas para cargar varios Javascript y hojas de estilo basadas en el controlador/acción.

 <%= javascript_include_tag controller_name if ::Rails.application.assets.find_asset(controller_name) %>

funciona bien como se esperaba. Este código carga un archivo Javascript en la canalización de activos si el archivo existe, basándose únicamente en el controlador actual.

Sin embargo, cuando trato de acceder al mismo controlador con una acción dependiente, obtengo un

The asset "static/landing.js" is not present in the asset pipeline.

error con el siguiente código:

 <%= javascript_include_tag("#{controller_name}/#{action_name}") if ::Rails.application.assets.find_asset("#{controller_name}/#{action_name}") %>

El archivo en cuestión no existe, pero se supone que el código enumerado lo detecta si no es así y no genera la llamada javascript_include_tag si el archivo no existe en el árbol app/assets/javascripts .

¿Algunas ideas?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Ok, entonces la respuesta resultó ser simple pero un poco difícil de alcanzar; Aquí vamos...

Desde Rails 4, ha podido eliminar la designación de tipo de archivo .js desde el final de la referencia y Rails la recogió a través de la canalización de activos. Después de un serio examen de conciencia y ofrendas de cafeína a los dioses de la codificación, lo volví a intentar para restablecer mi refactorización... y funcionó.

Aquí está el código final que va en mi archivo application.html.erb :

 <%= javascript_include_tag 'application', 'data-turbo-track': 'reload' %> <%= javascript_include_tag ("#{controller_name}"), 'data-turbo-track': 'reload' if ::Rails.application.assets.find_asset("#{controller_name}.js") %> <%= javascript_include_tag ("#{controller_name}/#{action_name}"), 'data-turbo-track': 'reload' if ::Rails.application.assets.find_asset("#{controller_name}/#{action_name}.js") %>

La misma sintaxis también funciona para las hojas de estilo, así que no dude en copiarla si necesita hojas de estilo dinámicas.

Lo que hace este bloque de código es permitirle minimizar el contenido del archivo application.js(.erb) al mínimo. Descubrí que en el pasado, el mío tendía a estar bastante hinchado, de ahí mi búsqueda de algo más dinámico y adaptable. Ahora puedo agregar un archivo de hoja de estilo/Javascript para cada controlador y acción secundaria si necesito abordar algo específico sin preocuparme de que las ruedas dentadas se llenen de código innecesario o no utilizado, pero se degrada muy bien si no he necesitado crear los archivos. .

NOTA: Todavía no he evaluado esto, pero espero que proporcione un buen impulso de rendimiento.

about 4 years ago · Santiago Gelvez 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