заменить частичное с JS в нем - PullRequest
0 голосов
/ 23 декабря 2010

У меня есть частичный «mypartial» в формате rhtml, который содержит блок js, например:

<script type="text/javascript">new Ajax.Updater([...]);</script>

В шаблоне rjs я вызываю

page.replace "container", :partial => "mypartial"

замена работает нормально, кромедля блока скрипта.Этот блок и его javascript не будут записываться в html (который я проверил с помощью панели инструментов Firefox / Web Dev -> Показать сгенерированный источник).

Нужно ли мне писать часть js в моем шаблоне rjs через страницу << "myjs ()";</p>

Ответы [ 3 ]

1 голос
/ 23 декабря 2010

Часть будет отображаться с неповрежденным блоком сценария, но, если я правильно помню, Prototype удалит их, прежде чем вставить HTML-код в DOM, чтобы eval их позже.Вот почему это не отображается в DOM инспектора.Вы можете проверить это, включив alert("HELLO FROM RJS") в сгенерированный скрипт - он должен показывать предупреждение.

1 голос
/ 23 декабря 2010

Мне кажется странным, что ваш page.replace пропустит теги сценария ... Что если вы используете помощник javascript_tag?Это также пропускает?

Другой вариант - просто включить этот JavaScript в один из файлов JavaScript, загружаемых из вашего макета.Тогда вам не нужно беспокоиться об удалении и замене.Если, конечно, вы не вставляете переменные Ruby.

Если вы используете переменные Ruby в своем JavaScript, то, возможно, вместо RJS ваш вызов AJAX должен отрисовывать шаблон js.erb, который добавляет JavaScriptи затем делает частичное.

0 голосов
/ 24 декабря 2010

Это была моя собственная вина, но я напишу это здесь для всех, кто может столкнуться с той же проблемой.

Код js будет оценен, НО: он не будет работать для document.observe ('dom: загружен'), потому что это событие будет инициировано, когда вы закончите загрузку страницы, а не при обновлении части. Личинка лица

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...