多态关联表单 - 创建新的或编辑现有的

时间:2017-05-05 22:20:47

标签: ruby-on-rails

我为公司的图像设置了多态关联。我想允许最多6张图片给公司。如果已创建图像,则应显示该图像,否则应显示该图像。

模型设置:

class Company < ApplicationRecord
   has_many :images, as: :imageable
   accepts_nested_attributes_for :images
end

控制器设置:

def details
   images_count = @company.images.count
   build_number = 6 - images_count
   build_number.times { @company.images.build }
end

在视图中:

<%= form_for(@company) do |f| %>
   <%= f.fields_for :images,  multipart: true do |g| %>
      <%= g.file_field :image %>
   <% end %>
<% end %>

是否可以检查是否已创建该特定图像实例,然后显示该图像?正如它当前创建的那样,它将对所有6个实例使用file_field。

1 个答案:

答案 0 :(得分:1)

在循环内部,您可以检查对象是否持久化

<%= form_for(@company) do |f| %> <%= f.fields_for :images, multipart: true do |g| %> <% if g.object.persisted? %> --- DISPLAY IMAGE <% else %> <%= g.file_field :image %> <% end %> <% end %> <% end %