我认为一切都很好..但它不起作用。
我在github上传了整个文件
https://github.com/iom00/action2.git
我最近更新了gem。但它在轨道3.2上也存在同样的问题
Plz帮帮我〜!
投资组合模型
class Portf
include Mongoid::Document
field :title, type: String
field :decs, type: String
attr_accessible :images
embeds_many :images
accepts_nested_attributes_for :images, :allow_destroy => true
end
图片模型
class Image
include Mongoid::Document
include Mongoid::Paperclip
field :portf_id, type: Integer
embedded_in :portf , :inverse_of => :images
has_mongoid_attached_file :file
end
投资组合控制器
# GET /portfs/new
# GET /portfs/new.json
def new
@portf = Portf.new
5.times { @portf.images.build }
respond_to do |format|
format.html # new.html.erb
format.json { render json: @portf }
end
end
# GET /portfs/1/edit
def edit
@portf = Portf.find(params[:id])
5.times { @portf.images.build }
end
形式
<%= form_for @portf, :html => { :multipart => true } do |f| %>
<%= f.fields_for :images do |image| %>
<% if image.object.new_record? %>
<%= image.file_field :file %>
<% end %>
<% end %>
答案 0 :(得分:1)
首先,您需要使images_attributes
可用于质量分配,而不是images
,因此您必须这样做
attr_accessible :images_attributes
您可能还想在其中添加:title
。
此外,当您在嵌入式文档中有回形针附件时,您需要添加级联回调。来自https://github.com/meskyanichi/mongoid-paperclip:
关于嵌入式文档的注意事项:如果您计划保存或更新父文档,则必须将cascade_callbacks:true添加到embeds_XXX语句中。否则,您的数据将被更新,但回形针功能将无法运行以复制/更新您的文件。
所以你需要这样做:
embeds_many :images, :cascade_callbacks => true
您可以在此处详细了解级联回调:http://mongoid.org/en/mongoid/docs/relations.html#common
此外 - 目前mongoid-paperclip存在阻止问题https://github.com/meskyanichi/mongoid-paperclip/issues/32拉请求已存在,但尚未合并。因此,如果将其与Mongoid 3一起使用,您可能会偶然发现此错误。