在尝试添加accepts_nested_attributes_for时,fields_for丢失

时间:2016-03-30 15:48:23

标签: ruby-on-rails ruby ruby-on-rails-4

我正在处理一个简单的表单功能,它通过嵌套表单添加图像。

应该存储我上传的所有图片的照片模型。

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

2 个答案:

答案 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

这也应该显示您的嵌套表单。