Rails image_tag 自动在@user.avatar.url 之前添加前缀“/images”,而不是回形针中的“/assets”
Rails image_tag auto prefixes "/images" before @user.avatar.url instead of "/assets" in paperclip
我正在使用回形针上传用户头像。
这是用户模型:
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "user.png", :path => "app/assets/images/:class/:attachment/:id/:basename_:style.:extension", :url => ":class/:attachment/:id/:basename_:style.:extension"
所以图像保存在 app/assets/images/user/avatar/:id/:basename_:style.:extension
但是当我这样做的时候
<%= image_tag @user.avatar.url %>
显示为:
<img src="/images/users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original.jpg" alt="99e88dc27c19d8c6163d9cd305f738be original">
即插入“/images”而不是“/assets”
我仔细检查了一下,头像图片存在于assets/images/user/avatar/文件夹
虽然页面中的所有其他图像都使用资产管道正确显示 "/assets/logo-thebighashgohere.png"
注意: 如果我手动插入图像 url 作为字符串,这将正常工作
即:
<%= image_tag "users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original.jpg" %>
正确显示为
<img src="/assets/users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original-thebighashgohere.jpg" alt="99e88dc27c19d8c6163d9cd305f738be original thebighashgohere">
我强烈建议您不要将用户生成的内容保存到资产文件夹中!
如果您的网站进入生产模式,资产会被编译,您在运行时输入的所有内容都不会被捕获。
类似的东西属于 /public 目录 (!)
解决您的问题
:url => ":class/:attachment/:id/:basename_:style.:extension
你告诉回形针如何生成你的"url"。使用 "path" 可以定义文件在内部存储的位置,使用 url 可以控制如何生成路由。您的死记硬背是错误的,其中没有任何路径。
但同样 - 不要将这些图片保存到资产中!
顺便说一句:我想知道您的解决方案在生产模式下是否可行。 assetspipeline 正在生成附加摘要的文件,而回形针对这些摘要一无所知,它总是会呈现没有摘要标记的路由。这样你就不能从资产管道中调用图像。所以你的整个概念不会在生产中起作用,但我可能是错的
我正在使用回形针上传用户头像。 这是用户模型:
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "user.png", :path => "app/assets/images/:class/:attachment/:id/:basename_:style.:extension", :url => ":class/:attachment/:id/:basename_:style.:extension"
所以图像保存在 app/assets/images/user/avatar/:id/:basename_:style.:extension
但是当我这样做的时候
<%= image_tag @user.avatar.url %>
显示为:
<img src="/images/users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original.jpg" alt="99e88dc27c19d8c6163d9cd305f738be original">
即插入“/images”而不是“/assets”
我仔细检查了一下,头像图片存在于assets/images/user/avatar/文件夹
虽然页面中的所有其他图像都使用资产管道正确显示 "/assets/logo-thebighashgohere.png"
注意: 如果我手动插入图像 url 作为字符串,这将正常工作 即:
<%= image_tag "users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original.jpg" %>
正确显示为
<img src="/assets/users/avatars/15/99e88dc27c19d8c6163d9cd305f738be_original-thebighashgohere.jpg" alt="99e88dc27c19d8c6163d9cd305f738be original thebighashgohere">
我强烈建议您不要将用户生成的内容保存到资产文件夹中!
如果您的网站进入生产模式,资产会被编译,您在运行时输入的所有内容都不会被捕获。 类似的东西属于 /public 目录 (!)
解决您的问题
:url => ":class/:attachment/:id/:basename_:style.:extension
你告诉回形针如何生成你的"url"。使用 "path" 可以定义文件在内部存储的位置,使用 url 可以控制如何生成路由。您的死记硬背是错误的,其中没有任何路径。
但同样 - 不要将这些图片保存到资产中!
顺便说一句:我想知道您的解决方案在生产模式下是否可行。 assetspipeline 正在生成附加摘要的文件,而回形针对这些摘要一无所知,它总是会呈现没有摘要标记的路由。这样你就不能从资产管道中调用图像。所以你的整个概念不会在生产中起作用,但我可能是错的