如何在不使用Asset Pipeline的情况下在Rails 5中提供静态图像?

时间:2017-06-11 08:27:12

标签: javascript ruby-on-rails angularjs ruby-on-rails-5

我有一个基于网络的应用,后端基于 Rails 5。我正在使用 AngularJS 作为前端。我没有使用资产管道来提供任何静态内容,所有脚本(JS& CSS)都加载在位于 index.html 文件中在public directory中,我在那里使用角度 ng-route 来进一步管理位置。

问题出现在我的 HTML 页面中,我需要使用 HTML图片标记包含图片,问题是服务器找不到图像文件。

<img src="assets/images/logo.jpg" style="padding-bottom:20px;" />

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

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

  config.public_file_server.enabled = true

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

1 个答案:

答案 0 :(得分:3)

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

在视图中使用your_app/public/images/logo.jpg引用<img src="/images/logo.jpg处的图片。

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

<%= image_tag('/images/logo.jpg') %>

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