【问题标题】:Building embedded mongoid documents in form以表单形式构建嵌入式 mongoid 文档
【发布时间】:2012-07-23 21:19:07
【问题描述】:

我可能遗漏了一些愚蠢的东西,但我无法将多个嵌入的照片文件放入一个表单中

型号

class Product
   include Mongoid::Document

   embeds_many :photos, cascade_callbacks: true
end

class Photo
   include Mongoid::Document

   embedded_in product, :inverse_of => :photos
   field :image_filename
   mount_uploader :image, ImageUploader
end

控制器 - products_controller.rb

def new
   @product = Product.new
   3.times { @product.photos.build }
end

表格

然后我用

做表格
fields_for @product.photos do |photo|
   <%= photo.file_field :image %>
end

问题是只显示了 1 张照片,但我正在控制器中构建 3 张照片。即使我在内存中构建了 3 个,@product.photos.count 的计数也是 0。我错过了什么吗?

【问题讨论】:

  • 与此类似,我认为您需要先“构建”产品。基本上,@product 还不存在(你没有“保存”它)所以任何基于集合的关联也将返回“nil”stackoverflow.com/questions/783584/…
  • @product 已经通过 Product.new 调用在内存中创建。这在 ActiveRecord 中很常见,但由于某种原因,它在 Mongoid 和嵌入式文档中不起作用

标签: ruby-on-rails mongoid


【解决方案1】:
fields_for @product.photos do |photo|
   <%= photo.file_field :image %>
end

应该是

fields_for :photos do |photo|
   <%= photo.file_field :image %>
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多