Jef*_*ros 3 html ruby-on-rails path paperclip ruby-on-rails-4
我的app/assets/images/文件夹中有一个名为“Flower.jpg”的图像。<%=image_tag("Flower.jpg")%>可以显示它,但我想用 html 显示它。<img src="Flower.jpg">什么都不做。
对于我的模型用户我还使用回形针,其中将影像存储public/system/users/avatars/000/000,并User.avatar_file_name返回绝对文件路径,在这种情况下是这样的:/system/users/avatars/000/000/157/thumb/Flower.jpg?1248273956。像这样将此路径插入 src:<img src="<%=@user.avatar_file_name%>">可以显示图像。
我在 Rails 控制台中找到了 Flower.jpg 的绝对路径:
> helper.image_tag("Flower.jpg")
=> "<img alt=\"Flower\" src=\"/assets/Flower.jpg\" />
Run Code Online (Sandbox Code Playgroud)
但是<img src="/assets/Flower.jpg\">,即使显示,也不会显示<img src="/system/users/avatars/000/000/157/thumb/Flower.jpg?1248273956">。这是为什么?
该image_tag助手预先考虑路径标准的图像文件夹到文件的路径。在我的 rails 版本中,这是“/images/”,所以这个
<%=image_tag("Flower.jpg")%>
Run Code Online (Sandbox Code Playgroud)
被渲染为
<img src="/images/Flower.jpg">
Run Code Online (Sandbox Code Playgroud)
与所有这样的资源路径一样,实际文件应该相对于您的应用程序的公共文件夹,即
<RAILS ROOT>/public/images/Flower.jpg
Run Code Online (Sandbox Code Playgroud)
在您的 rails 版本中,默认路径看起来像/app/assets/images/,所以这
<%=image_tag("Flower.jpg")%>
Run Code Online (Sandbox Code Playgroud)
被渲染为
<img src="/app/assets/images/Flower.jpg">
Run Code Online (Sandbox Code Playgroud)
指向这个文件:
<RAILS ROOT>/public/app/assets/images/Flower.jpg
Run Code Online (Sandbox Code Playgroud)
如果你这样做
<img src="Flower.jpg">
Run Code Online (Sandbox Code Playgroud)
它会期望文件在 中<RAILS ROOT>/public/Flower.jpg,显然它不在那里,所以 img 标签将不起作用。如果你想自己写出来,不使用helper,那么从<RAILS ROOT/public文件夹中给出文件的路径,即
<img src="/app/assets/images/Flower.jpg">
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在您放置的 html 片段中,scr="而不是src="将其破坏得更多。
| 归档时间: |
|
| 查看次数: |
15945 次 |
| 最近记录: |