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'