Rails:资产中托管图片的网址是什么?

时间:2019-02-20 17:26:09

标签: ruby-on-rails image url routes

我在资产文件夹中的rails服务器上托管了一个图像,我想通过URL而不是使用路径来访问该图像,以便可以在我的react组件中显示它。

如何找到上述图片的网址,以便在转到该网址时显示图片?

3 个答案:

答案 0 :(得分:0)

您必须使用image_tag。如果您的资产中包含“ image.png”,则可以使用

<%= image_tag "image.png" %>

,它将导致这样的网址

/assets/image-bb14d53a12ca1aa006defb5c0f0923aa3c946f7e2dfd534846b3a1d3b8aac72e.png

使用image_tag时,Rails创建一个用于图像认证的随机令牌。您不能只使用<img src="/assets/image.png,因为没有令牌。

答案 1 :(得分:0)

据我所知,您需要进入公共文件夹,然后进入资产

找到所需的图像,然后复制其名称。

如果图像名称位于另一个文件夹中,则需要在图像名称前使用Function GetFolder(root, fpath) Dim f As Object Dim arr, i arr = Split(fpath, "|") For i = 0 To UBound(arr) If i = 0 Then Set f = root.Folders(arr(i)) Else Set f = f.Folders(arr(i)) End If Next i Set GetFolder = f End Function /assets/img-name-033cce876b38fb47072fb3668a5.jpg之类的名称来调用它。

答案 2 :(得分:0)

Rails的资产管道会创建每个资产的摘要,并将其添加到文件名中,因此名称并不总是相同的,您不能只是复制它并永久使用它(您可以使rails重新创建所有摘要,然后例如,所有网址都会更改。

我可以想到几种选择:

1-禁用资产管道摘要功能 在您环境的配置文件中,添加config.assets.digest = false,现在该名称结尾没有摘要。不过请阅读文档,因为摘要存在是有原因的,您可以将其禁用,但是最好在阅读文档后再决定。

https://guides.rubyonrails.org/asset_pipeline.html#turning-digests-off

2-将这些图像移至/ public 如果将图像移至/ public,则资产管道不会对其进行编译。

3-使用非愚蠢之类的宝石来选择应该拥有的资产 https://rubygems.org/gems/non-stupid-digest-assets使您可以配置一些资产,以防止资产管道跳过摘要生成而无需关闭所有资产的功能

4-让资产单独流水线,然后将url放在html上的某个位置 要获取正确的图像当前路径,可以使用辅助程序image_path(例如:image_path('something.png')返回/assets/something-123...890.png)。然后,您可以将其写在模板上,例如:

<script>
  imageUrl = '<%= image_url('something.png') %>';
</script>

您将可以在JavaScript代码上访问该imageUrl变量。