Как использовать гем nested_form с другим партиалом для новых и существующих объектов вложенной модели?

Я использую гем nested_form, но столкнулся с одним вариантом использования, который вызывает у меня некоторые проблемы. У меня есть одна конкретная вложенная форма, в которой партиал для существующих вложенных объектов отличается от той, которая нужна при добавлении нового объекта. (Конкретный вариант использования - изображения - существующие загруженные изображения отображают тег изображения, новые объекты изображений должны отображать поле file_field для загрузки.)

Одна вещь, которую я пробовал, - это проверить партиал для f.object.nil? чтобы определить, что отображать, но как новые, так и существующие объекты по-прежнему выдавали частичный код существующего объекта. Я предполагаю, что это как-то связано с тем, как nested_form BuilderMixin вызывает fields_for?

Есть ли простой способ сделать это, который мне не хватает? Или мне нужно посмотреть на изменение кода nested_form link_to_add, чтобы приспособиться к этому?

Для справки, вот моя попытка использовать одну частичную:

<tr>
    <% if !f.object.nil? %>
        <td>
            <a href="/customer_images/<%= f.object.id %>" target="_new">
                <%= image_tag f.object.picture.url -%>
            </a>
        </td>
        <td>
            Description: <%= f.object.image_description %><br/>
            Date Uploaded: <%= (f.object.nil? || f.object.created_at.nil?) ? "Not yet uploaded." : f.object.created_at.strftime("%A %h %d, %Y %I:%M %p") %>
            <br>
            <%= f.link_to_remove "Remove this image" %>
        </td>
    <% else %>
        <td>&nbsp;</td>
        <td>
            <%= label :image, :file, "Select File:" %><%= f.file_field :picture %><br />
            Description: <%= f.text_field :image_description %><br />
        </td>   
    <% end %>
</tr>
0
задан Chris Hart 9 October 2011 в 16:07
поделиться