Собственно, есть форма создания/редактирования сущности Page. Внутри этой формы нужно рендерить все существующие Blocks, которые привязаны к этой Page (Page has_many :blocks). Сам вопрос заключается вот в чем - как в стиле rails way сделать так, чтобы кнопка "Добавить блок" через AJAX рендерила новые поля блока (которые рендерятся для уже существующих блоков внутри fields_for).
<%= form_for([@page.site, @page]) do |f| %>
<%= model_errors(@page) %>
<div class="form-group">
<%= f.label :slug, 'Адрес' %><br>
<%= f.text_field :slug, class: 'form-control' %>
</div>
<h2 class="sub-header">Блоки</h2>
<div id="pageBlocks" class="page-blocks">
<%= f.fields_for :blocks do |ff| %>
<div class="form-group">
<%= ff.label :name, 'Название' %><br>
<%= ff.text_field :name, class: 'form-control' %>
</div>
<div class="form-group">
<%= ff.label :content, 'Содержание' %><br>
<%= ff.text_area :content, class: 'form-control' %>
</div>
<% end %>
<%= link_to 'Новый блок', "#", :class => 'btn btn-default', id: 'addBlock' %>
</div>
<%= f.submit class: 'btn btn-default' %>
<% end %>
Форма сейчас выглядит так:
<form accept-charset="UTF-8" action="/account/sites/1/pages/1" class="edit_page" id="edit_page_1" method="post"><div style="display:none"><input name="utf8" type="hidden" value="✓" /><input name="_method" type="hidden" value="patch" /><input name="authenticity_token" type="hidden" value="/kqBgcHd+97ICZaE0YrwXDtX4/TzGaawetMUawJCsss=" /></div>
<div class="form-group">
<label for="page_slug">Адрес</label><br>
<input class="form-control" id="page_slug" name="page[slug]" type="text" value="/" />
</div>
<h2 class="sub-header">Блоки</h2>
<div id="pageBlocks" class="page-blocks">
<div class="form-group">
<label for="page_blocks_attributes_0_name">Название</label><br>
<input class="form-control" id="page_blocks_attributes_0_name" name="page[blocks_attributes][0][name]" type="text" value="sections5" />
</div>
<div class="form-group">
<label for="page_blocks_attributes_0_content">Содержание</label><br>
<textarea class="form-control" id="page_blocks_attributes_0_content" name="page[blocks_attributes][0][content]"></textarea>
</div>
<input id="page_blocks_attributes_0_id" name="page[blocks_attributes][0][id]" type="hidden" value="1" />
<a class="btn btn-default" href="#" id="addBlock">Новый блок</a>
</div>
<input class="btn btn-default" name="commit" type="submit" value="Сохранить" />
</form>