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

时间:2011-10-09 16:07:49

标签: ruby-on-rails ruby 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>

1 个答案:

答案 0 :(得分:6)

那里没有对象nil。您应该检查数据库中是否存在调用new_record?方法的对象。

See doc