Rails paperclip amazon aws s3 gem,如何更改图片网址?

时间:2012-03-31 13:21:20

标签: ruby-on-rails ruby ruby-on-rails-3 paperclip

在我的模特中,我有:

  has_attached_file :image,
          :storage => :s3,
          :styles => { :original => ["300x250>", :png], :small => ["165x138>", :png], :mini => ["120x120>", :png] },
          :path => 'images/vind/:style/:id/:basename.:extension',
          :url => 'images/vind/:style/:id/:basename.png',
          :bucket => 'konkurrencerher',
          :s3_credentials => {
          :access_key_id => 'x',
          :secret_access_key => 'x'
  }

问题在于,亚马逊s3主机名已添加到视图中的网址。

我有一个解决方案,但有点难看:

<%= image_tag(kon.photo.image.url(:small).gsub("http://s3.amazonaws.com/konkurrencerher", ""), :class => 'koni') %>

但是,如何在没有Amazon S3主机名的情况下在模型中定义图像网址?

2 个答案:

答案 0 :(得分:2)

查看Paperclip::Storage::S3,尤其是:s3_host_alias

您可以尝试使用以下附加选项配置has_attached_file

 :url => ':s3_alias_url',
 :s3_host_alias => "example.domain.net"

希望这有帮助。

答案 1 :(得分:0)

我的解决方案在初始化程序映射中创建了一个文件:

Paperclip.interpolates(:s3_path_url) { |attachment, style|
  "#{(attachment.path).gsub("images/", "")}"
}

然后网址应为:

:url => ':s3_path_url'

这是一个更好的解决方案。