我为公司的图像设置了多态关联。我想允许最多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。
答案 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 %