在公用文件夹中显示静态图像(rails 4)

Tim*_*ung 13 ruby-on-rails ruby-on-rails-4

我在公共文件夹中有一些图像,我/public/link/to/image.jpg在控制器中获取了url .我想在我的视图中显示它,所以我将url传递给视图.

但是如何在网页上显示呢?

我搜索了帖子,其中大部分与存储在assets文件夹中的照片有关,可以<%= image_tag image-url (filename) %>在视图中检索.

那么如何在视图中的公共文件夹中显示图像?

Jon*_*man 18

我刚刚在我的一个应用程序中测试了这个,将图像添加到公共文件夹,并且能够通过使用以下方式在视图中呈现它:

<img src="/your_image_file_name.png">

我以前从未通过公共文件夹完成它,但如果我不得不猜测我会说你不需要文件路径的"/ public"部分.

如果我理解这个问题,那应该这样做 - 希望有所帮助.

  • 我的情况有点复杂,我需要在应用程序中使用 Rails image_tag 而不是普通的 HTML 标签,但删除文件路径的“/public”部分也适用于 image_tag。 (2认同)

And*_*ius 8

您也可以使用Rails-way via <%= image_tag("/path/to/file.jpg") %>

出于安全原因,image_tag只能查看内部/public,因此您不必/public在路径中指定- 它将自动添加.

备注 - 尝试始终将图像存储在子文件夹中,/public因为如果省略/public并简单地将图像文件名传递给image_tag,如果<%= image_tag("filename.jpg")%> < - 那么它将不会起作用(image_tag),在这种情况下它将会去搜索/assets/images文件夹.

行动解决方案:

  1. 在此输入图像描述

  2. 在此输入图像描述


Evo*_*lve 8

这在 Rails 7 之前仍然有效。

假设您有两张图像asset_image.png,并public_image.png分别保存在/app/assets/images和 下/public

您永远不需要在代码的文件路径中包含 /assets 或 /public。

图像保存在 /app/assets/images 下:

img_tag('asset_image.png')  # <== No leading slash; Looks in assets
Run Code Online (Sandbox Code Playgroud)

直接保存在 /public 下的图像:

img_tag('/public_image.png') # <== Has a leading slash; Looks in Public
Run Code Online (Sandbox Code Playgroud)


Ged*_*nas 7

您可以使用:

<%= image_tag('/link/to/image.jpg') %>
Run Code Online (Sandbox Code Playgroud)

如果您的图像位于public目录中,并且链接/到/子目录

如果它位于根公共文件夹中:

<%= image_tag('/image.jpg') %>
Run Code Online (Sandbox Code Playgroud)