<img src=""> 不接受图像路径

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">。这是为什么?

Max*_*ams 5

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="将其破坏得更多。