我正在处理一个简单的表单功能,它通过嵌套表单添加图像。
应该存储我上传的所有图片的照片模型。
class Photo < ActiveRecord::Base
belongs_to :posting
has_attached_file :image, styles: { large: "500x500>", medium: "300x300>", thumb: "100x100#" }, default_url: "/images/:style/missing.png"
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
end
我的嵌套表单的片段(在表单中)
<%= post.fields_for :photos, html: { multipart: true } do |photo| %>
<%= photo.label :image %>
<%= photo.file_field :image %>
<% end %>
一切都很好,但是当我取消注释accepts_nested_attributes_for行时。我的嵌套表格消失了!
class Posting < ActiveRecord::Base
belongs_to :subcategory
belongs_to :category
has_many :photos
#accepts_nested_attributes_for :photos
end
答案 0 :(得分:2)
请参阅fields_for的API文档中的一对多示例
未经测试,但这应该是您的解决方案。
<% post.photos.each do |photo| %>
<%= post.fields_for :photos, photo, html: { multipart: true } do |photo_fields| %>
<%= photo_fields.label :image %>
<%= photo_fields.file_field :image %>
<% end %>
<% end %>
答案 1 :(得分:2)
我假设您在PostsController的新操作中分配了一个@post实例变量。您必须将build_photo方法添加到新操作:
def new
@post = Post.new
@post.build_photo
end
这也应该显示您的嵌套表单。