我正在尝试将 holder.js 库用于回形针默认图像。Holder.js 创建 data-src 图像预览,当图像具有 src="holder.js/#{width}x#{height}" 但无法创建正确的 url。其实我有两个问题:
第一个问题,是获取缩略图样式名称,用于获取样式大小。
其次,使用相对路径创建图像 src(例如 holder.js/100x100)。rails 为生成的 url 添加 /assets/ 。
我正在尝试将 holder.js 库用于回形针默认图像。Holder.js 创建 data-src 图像预览,当图像具有 src="holder.js/#{width}x#{height}" 但无法创建正确的 url。其实我有两个问题:
第一个问题,是获取缩略图样式名称,用于获取样式大小。
其次,使用相对路径创建图像 src(例如 holder.js/100x100)。rails 为生成的 url 添加 /assets/ 。
这是我的解决方案。
在模型中定义 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.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'
(出现路由错误)
希望尽快解决这个问题。