with rails from javascript ruby-on-rails header rjs

javascript - from - rails render with params



Javascript incluye la mejor práctica de etiquetas en una aplicación Rails (4)

Digamos que necesito llamar a un archivo javascript en el <head> de una plantilla ERb. Mi instinto es hacer lo de siempre:

<head> <%= javascript_include_tag :defaults %> <!-- For example --> </head>

en el diseño de mi aplicación. El problema, por supuesto, es que estos archivos javascript se cargan en todas las páginas de mi aplicación, independientemente de si son necesarias para la página que se está viendo.

Entonces, lo que me pregunto es si hay una buena forma de cargar un javascript en los encabezados de, por ejemplo, todas las plantillas de ERb que se encuentran solo en un directorio específico.


Normalmente tengo lo siguiente en el archivo de diseño:

<head> <%= javascript_include_tag :defaults %> <!-- For example --> <%= @extra_head_content %> </head>

Y luego en las vistas:

<% (@extra_head_content ||= "") += capture do %> <%= other_content %> <% end %>

Consulte la documentación de API para #capture


Siento que no hay nada de malo, incluidos todos los valores predeterminados de un año, ya que pueden almacenarse en caché en el navegador del usuario.


Yo usaría content_for .

Por ejemplo, especifique el lugar para insertarlo en el diseño de la aplicación:

<head> <title>Merry Christmas!</title> <%= yield(:head) -%> </head>

Y enviarlo desde una vista:

<%- content_for(:head) do -%> <%= javascript_include_tag :defaults -%> <%- end -%>


Sugeriría que no se agregue javascript en el encabezado ya que hace que la página se cargue más despacio. En lugar de cargar el js en la parte inferior de la página, que es más rápido. http://developer.yahoo.com/performance/rules.html#js_bottom

<body> .... <%= yield(:js) -%> </body>

Y enviarlo desde una vista:

<%- content_for(:js) do -%> <%= javascript_include_tag :defaults -%> <%- end -%>