【问题标题】:Rails paperclip multiple attachment - Getting attached filesRails 回形针多个附件 - 获取附件
【发布时间】:2012-12-16 18:11:02
【问题描述】:

我已经实现了使用回形针上传多张图片。 并存储到私有路径:

:path => ":rails_root/data/images/:id/:basename.:extension"

现在我想给他们发送一个安静的服务,将组件ID作为参数。 问题是我不知道如何获取他们的图像,因为组件不将图像存储在数据库中,我已经写了

has_many :assets

但是几天前创建的迁移者没有资产。

【问题讨论】:

  • 您在创建资产模型时是否已将add_attachment :assets, :image 添加到迁移中?
  • 抱歉,我是 Rails 新手,不知道具体该怎么做。现在我有一个具有多个资产的模型组件,并且该资产具有 has_attached_file 图像。那么,我究竟应该怎么做呢?我应该调用什么迁移?
  • 您是否使用rails g model 创建了资产模型?
  • 是的,参考组件。问题是组件不知道我认为的de assets,因为当我得到一个组件的json信息时,并没有出现任何关于图像的信息,所以我不知道如何实现它们。
  • 你应该生成另一个迁移rails g migration AddImagesToAssets 并放置` class AddImagesToAssets

标签: ruby-on-rails image paperclip attachment


【解决方案1】:

您应该有一个迁移,它创建带有回形针字段的资产表:

create_table :assets do |t|
  t.timestamps
end
add_attachment :assets, :image

【讨论】:

  • 我试过 rails g migration AddAssetToComponent 但创建的文件没有 add_attachments。我做错了什么?
  • 尝试使用回形针迁移生成器:rails generate paperclip asset imagePaperclip Quick Start
  • 我做到了!我认为问题在于组件不了解资产,而不是关于图像的资产。
  • 您应该将图像定义更改为类似:path => ":rails_root/public/data/images/:id/:basename.:extension", :url => '/data/images/:id/:basename.:extension' 的内容,然后使用asset.image.url 获取网址。
  • 要使用 http 使文件可用,您应该将其放入公共目录。所以,你不应该使用 /data 目录。所以,你应该把图片定义改成:path => ":rails_root/public/data/images/:id/:basename.:extension", :url => '/public/images/:id/:basename.:extension'(之前的评论有误)
【解决方案2】:

试试

rails g paperclip Asset image

【讨论】:

  • 我做到了。图片存储正确,但我说的是组件不知道有哪些资产。
  • 对不起,我认为问题可能出在路线上。当我试图向他们展示时,我收到以下错误:Started GET "/Users/.../data/images/8/image_2.jpg"ActionController::RoutingError (No route matches [GET] "/Users/.../data/images/8/image_2.jpg"):
  • 好的!我还没有找到显示它的方法,但它可以通过安静的操作发送它:send_file @component.assets.first.image.path, :type => @component.assets.first.image_content_type 所以没关系!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多