我在资产文件夹中的rails服务器上托管了一个图像,我想通过URL而不是使用路径来访问该图像,以便可以在我的react组件中显示它。
如何找到上述图片的网址,以便在转到该网址时显示图片?
答案 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变量。