轨道上的红宝石 3 - 使用类回形针宝石上传时未定义的方法'metadata'



在尝试使用Mongoid和Paperclip上传文件时,找不到为什么会出现这种情况。

undefined method `metadata' for #<ActionDispatch::Http::UploadedFile:0x10625e930>

我正在运行以下(最新的回形针、mongoid回形针和aws-s3):

gem "rails", "3.0.6"
gem "mongoid", "2.0.1"
gem "bson_ext", "1.3.0"
gem "paperclip"
gem "mongoid-paperclip", :require => "mongoid_paperclip"
gem "aws-s3",            :require => "aws/s3"

我看到一些地方建议将以下内容添加到类似的初始值设定项中。我这样做了,但没有用。

if defined? ActionDispatch::Http::UploadedFile
    ActionDispatch::Http::UploadedFile.send(:include, Paperclip::Upfile)
end

还有人遇到这种情况吗?

我有上传程序:

class Image
  include Mongoid::Document
  embedded_in :imageable, polymorphic: true
  mount_uploader :file, ImageUploader
end

它用于我所有包含图像的类,例如:

class Shop
  include Mongoid::Document
  embeds_one :logo, as: :imageable, :class_name => 'Image', cascade_callbacks: true  
end

然后在形式上看起来像这样:

<%= form_for @shop do |f| %>
  <%= f.fields_for :cover do |u|%>
    <%= u.file_field :file %>
  <% end %>
  <%= f.submit 'Save' %>
<% end %>

我认为这是处理这个问题的一个非常巧妙的方法。

如上所述,我在Mongoid、Carrierwave和GridFS方面也遇到了类似的问题
我的解决方案非常棘手,但对我来说很有效。
我有一个图像类,这就是我的图像安装的地方

class Image
  include Mongoid::Document
  include Mongoid::Timestamps
  field :title
  field :image
  field :order
  mount_uploader :image, ImageUploader
  embedded_in :article
end
class Article
  include Mongoid::Document
  ...
  embeds_one :image
  ...
end

我的carrierwave上传器希望将属性与挂载上传器的密钥(图像)一起发送给它。

Image.create( :image => image_attributes)

但这篇文章的新编辑形式创造了一个看起来像的东西

:article => { :image => #ActionDispatch... }

而不是

:article => { :image => { :image => #ActionDispatch... } }

所以我的解决方案是将表单中字段的名称更改为

file_field :article, :photo

然后将照片设置器添加到创建图像的文章类中

model Article
  include Mongoid::Document
  ...
  def photo=(attrs)
    create_image(:image => attrs)
  end
end

我用image=尝试过这个,但它无限重复,做了坏事
我也试过这个

file_field "article[image]", :image

没有setter,它没有引发异常,但也没有保存我的图像。

据我所知,回形针在这些方面很相似。也许这对某人有用,或者有人可以清理我的烂摊子

相关内容

  • 没有找到相关文章

最新更新