Rails Paperclip和default_url

时间:2013-07-25 19:31:55

标签: ruby-on-rails paperclip placeholder holder.js

我试图将holder.js库用于回形针默认图像。 当图像有src =“holder.js /#{width} x#{height}”时,Holder.js创建data-src图像预览 但无法创建正确的URL。 其实我有两个问题:

第一个问题是获取样式大小的获取缩略图style_name。

其次,使用相对路径创建图像src(例如holder.js / 100x100)。 rails prepends / assets /用于生成的URL。

1 个答案:

答案 0 :(得分:2)

这是我的解决方案。

在模型中定义STYLES常量。

应用/模型/ post.rb

class Post < ActiveRecord::Base
  # ...

  STYLES = {
    large: '300x300#',
    medium: '250x250#',
    small: '100x100#',
    thumb: '50x50#',
    tiny: '20x20#'
  }

  has_attached_file :attachment, {
    styles: STYLES,
    default_url: '/assets/holder.js/:dimension',
    path: # your path
    url: # your url
  }

  # ...
end

比创建新Paperclip interpolation

<强>配置/初始化/ paperclip.rb

# returns value of the STYLES[:dimansion]
# Post::STYLES[:tiny] -> '20x20'
Paperclip.interpolates :dimension do |attachment, style|
  key = style.to_sym
  return Post::STYLES[key].gsub(/[^\d\w+]/, '') if Post::STYLES.has_key?(key)
  '900x500' # or return default :original dimensions
end

最后,在你的观点中:

<%= image_tag nil, { data: { src: 'holder.js/200x200' } } %>

<%= tag :img, { src: '', data: { src: 'holder.js/200x200' } } %>

希望这有帮助。

PS。更好地使用holder_rails gem

更新:害怕你必须使用

default_url: '/assets/holder.js/:dimension'

而不是

default_url: 'holder.js/:dimension'

(得到路由错误)

希望尽快解决这个问题。