如何将nested_form gem与新的与现有嵌套模型对象的不同部分一起使用?

Chr*_*art 0 ruby ruby-on-rails nested-forms

我正在使用nested_form gem但是遇到了一个给我带来麻烦的用例.我有一个特定的嵌套表单,其中现有嵌套对象的部分不同于添加新对象时所需的部分.(特定用例是图像 - 现有上传图像显示图像标记,新图像对象需要呈现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>
Run Code Online (Sandbox Code Playgroud)

apn*_*ing 6

没有任何对象可以nil存在.您应该检查调用该new_record?方法的数据库中是否存在该对象.

见文档.