Реализация AJAX с rjs в Ruby on Rails - PullRequest
1 голос
/ 03 марта 2011

Допустим, вы хотите добавить ajax с rjs, а элемент, к которому вы хотите асинхронно добавить html, является частичным внутри частичного, что означает, что ваш домашний вид рендерит частичный элемент в общей папке, а затем этот частичный рендеринг другая часть в вашей общей папке. Как вы учитываете это в своем файле .rjs при вызове page.insert_html :bottom, :partial =>..., а также как вы учитываете это в домашнем представлении и в обеих учетных записях?

1 Ответ

0 голосов
/ 03 марта 2011

page.insert_html не учитывает, был ли исходный источник HTML частичным или нет - вам нужно всего лишь дать ему идентификатор DOM (т. Е. <div id="foo">), чтобы использовать его в качестве контрольной точки для вставки.

Если вы знаете, куда хотите вставить HTML через AJAX, сделайте, чтобы элемент имел id и используйте его в качестве аргумента для page.insert_html


Вот пример. Предполагая, что у вас есть представление, которое отображает следующее:

<div id="div_tag_in_home_page">
  <%= render :partial => "shared/container" %>
</div>

И эти частичные:

<!-- app/views/shared/_container.html.erb -->
<div id="container_div">
  <%= render :partial => "shared/sub_container" %>
</div>

<!-- app/views/shared/_sub_container.html.erb -->
<div id="sub_container_div">
  Some Content That Needs Appending
</div>

Что при рендеринге дает вам следующее:

<div id="div_tag_in_home_page">
  <!-- app/views/shared/_container.html.erb -->
  <div id="container_div">
    <!-- app/views/shared/_sub_container.html.erb -->
    <div id="sub_container_div">
      Some Content That Needs Appending
    </div>
  </div>
</div>

Чтобы добавить контент к #sub_conainer_div с использованием части с именем app/views/shared/_additional_content.html.erb, вы должны использовать:

page.insert_html :bottom, 'sub_container_div', :partial => 'shared/additional_content'
...