Вставьте вызов JavaScript внутри <body onLoad = function ()> в RAILS - PullRequest
2 голосов
/ 26 ноября 2009

Я n00b на рельсах. Вопрос очень прост, я хочу знать, как я могу сделать вызов функции javascript внутри тега body для события onLoad.

Я спрашиваю об этом, потому что в представлениях я не могу найти никакого тега body или head (как будто они генерируются в другом месте).

Спасибо

Ответы [ 3 ]

4 голосов
/ 27 ноября 2009

Вам не нужно изменять тег body, чтобы связать функцию Javascript с onload. Вместо использования атрибута onload в теле, вы можете назначить функцию window.onload во внешнем файле Javascript.

Существуют более продвинутые способы, использующие прослушиватели событий, чтобы сделать то же самое (вызвать функцию при загрузке страницы), которая позволила бы добавить несколько функций прослушивателя или вызвать функции при готовности DOM, немного / некоторое время до загрузки страницы. Просто установить window.onload - это самый простой способ, и ваш Javascript будет ненавязчивым.

2 голосов
/ 27 ноября 2009

Эрик Брехемье и Мтяка оба правы.

Другой подход (если вам нужно добавить пользовательские элементы в верхний / нижний колонтитул, которые указываются для каждого представления, вам нужно сделать что-то подобное с блоками yield

Вот пример, позволяющий переопределять заголовок для каждой страницы, но та же самая техника применима к настройке тегов script в теге заголовка HTML.

app/views/layouts/posts_layout.html.erb

<html>
  <head>
    <title><%= yield(:page_title) || "My awesome site"%></title>
  </head>
  <body><%= yield %> </body>
</html>

app/views/posts/index.html.erb

<%= content_for :page_title, "post listing" %>
<h1>Here are your posts...</h1>
2 голосов
/ 26 ноября 2009

Теги body и head обычно определяются в одном из макетов. Макеты по умолчанию расположены в app/views/layouts.

...