如何在不使用资产管道的情况下在 Rails 5 中提供静态图像?

Par*_*ras 4 javascript ruby-on-rails angularjs ruby-on-rails-5

我有一个基于 Web 的应用程序,后端构建在Rails 5我在前端使用AngularJS。我没有使用Asset Pipeline来提供任何静态内容,我的所有脚本(JS&CSS)都加载到了index.html文件中,public directory然后我使用 angular 的ng-route来进一步管理位置。

问题出现的时候,我的一个HTML页面,我需要包括图像使用HTML图像标记,问题是,服务器无法找到图像文件。

<img src="assets/images/logo.jpg" style="padding-bottom:20px;" />
Run Code Online (Sandbox Code Playgroud)

我尝试将图像保留在app/assets/imagespublic/assets/images 目录中,但在所有实例中,我都收到路由错误,指出在我的 rails 服务器控制台中找不到路由。

参考几个堆栈溢出答案,我在我的 config development.rb 文件中尝试了这一行:

  config.public_file_server.enabled = true
Run Code Online (Sandbox Code Playgroud)

但它没有用。那么如何在不使用 Rails Assetpipeline 的情况下提供图像?

ste*_*tef 5

要在不使用资产管道的情况下提供图像,请将图像放在public目录中。

在您的视图中your_app/public/images/logo.jpg使用引用了图像<img src="/images/logo.jpg

Rails 还为此提供了一个辅助方法,它生成相同的代码,但提供了一些额外的 Rails 功能:\

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

同样,您省略public了路径的一部分。此外,我建议不要在public被调用的目录中设置一个目录assets- 它将被资产管道覆盖。它也会让你感到困惑。我会将该目录名称更改为其他名称。