Rails UJS для динамически добавляемого контента - PullRequest
5 голосов
/ 28 февраля 2012

Я использую Rails 3.0 с прототипом сценария ujs rails.js.

У меня есть несколько link_to "...", :remote => true ссылок, которые добавляются на страницу после загрузки страницы, и поэтому после прикрепления rails.jsсобытия ujs для всех a[data-remote] ссылок.

Как мне заставить rails.js сканировать новые ссылки?

rails.js, похоже, состоит из одной анонимной функции, поэтому я не могу вызвать ее напрямую.

Единственный способ сделать это - обернуть все файлы rails.js в свою собственную функцию, которую я затем могу вызывать при загрузке страницы * и *, когда добавляю новые ссылки.

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

1 Ответ

2 голосов
/ 06 июня 2012

При рендеринге кнопки, ссылки и т. Д. Вы используете помощников рельсов

= link_to "Add to basket", basket_path, :method => :post, :remote => true

Таким образом, вы в ответе на ваше удаленное представление (например: some_view.js.erb /some_view.js.haml ) вы должны снова использовать помощники rails, если вам нужен элемент : remote .Вам не нужно повторно сканировать их новые элементы DOM, чтобы подключить удаленное поведение.

В представлении js вы можете обновлять / заменять содержимое из DOM, используя javascript

:plain
        $('#some-id-selector').replaceWith("#{escape_javascript(render :partial => 'some_other_view.html.haml')}");

Также вы можете посмотреть в Инспекторе сетей вашего браузера, отправляются ли новые действия.

...