【问题标题】:Ruby on Rails, image does not loadRuby on Rails,图像不加载
【发布时间】:2018-10-27 16:19:52
【问题描述】:

我正在尝试做一些基本的 Rails。我正在尝试使用以下代码从app/assets/images 文件夹加载图像:

<%= image_tag 'image.jpg'%>

它会生成以下地址(我使用的是 localhost:3000): http://localhost:3000/images/image.jpg

我已经尝试了我能找到的所有不同的 Rails 图像迭代,包括使用 &lt;img&gt; 标签和 src="/assets/images/image.jpg" 等。所有这些都没有运气。

还尝试将 production.rb(编辑:和 development.rb)更改为具有以下代码:

config.serve_static_assets = true
config.assets.compile = true

跟随localhost,链接报错

"没有路线匹配 [GET] "/images/image.jpg""

【问题讨论】:

  • 如果你在本地工作,为什么你改变production.rb而不是development.rb
  • @AntonTkachov 我想这会更有意义。我会把它归结为对 Rails 的新手。我已经进行了更改,但不幸的是仍然没有成功。
  • 你有什么版本的导轨。 rails -v 在控制台中
  • @AntonTkachov rails -v 是 5.0.7
  • 你重启服务器了吗? rails s

标签: ruby-on-rails ruby image


【解决方案1】:

Sprockets 默认使用的公共路径是 /assets。 这可以更改为其他内容:

config.assets.prefix = "/some_other_path"

from rails guides

所以您的图片必须在http://localhost:3000/assets/image.jpg 上可用

PS:作为建议,请尝试阅读指南,这对您将来肯定会有所帮助。

【讨论】:

  • 当您说我的图像必须在“localhost:3000/assets/image.jpg”可用时,这是否意味着如果图像具有文件路径 app/assets/image.jpg 那么它应该可以工作?我已经尝试过了,但仍然遇到同样的错误。
  • 不,基本上,没有您最初提到的任何额外配置,并且 image.jpg 在 app/assets/images/ 中应该没问题
  • 啊...这是我开始的地方(在阅读了其他帖子之后)。我只进行了其他更改,因为这不起作用。有什么想法吗?
  • 如果您使用 byebug 作为调试 gem,请将 &lt;% byebug %&gt; 放在您的页面上,然后前往运行服务器的控制台并尝试调查 image_tag 'image.jpg' 产生的内容。另一个常见的事情是在image_tag 中省略文件扩展名,或者可能放错了。你的文件真的有jpg扩展名吗?
  • 虽然我目前无法准确测试您要问的内容,但我想我可以回答 image_tag 产生的内容,那就是网址:localhost:3000/images/image.jpg 如果我误解了您,请随意等我检查你问的其他事情。
【解决方案2】:

尝试删除

config.serve_static_assets = true
config.assets.compile = true

并添加

config.assets.debug = true
config.assets.quiet = true

给你的development.rb

【讨论】:

  • 我已经删除了config.serve_static_assets = true config.assets.compile = true 其他的已经在那里了。
  • 重新加载您的应用程序(停止 rails 并再次启动它)并检查它是否工作
  • 我现在收到一个错误:“TypeError:对象不支持此属性或方法”
【解决方案3】:

我想通了:

解决一个单独的问题,即我在

上遇到错误(TypeError:Object 不支持此属性或方法)

&lt;%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %&gt;

根据某人的建议,我将“应用程序”更改为“默认”。它解决了这个问题,但似乎这个更改后来导致了我的图像问题。为了解决图像问题,我将其改回“应用程序”,然后为了修复这个原始的 TypeError,我从 application.js 中删除了 require_tree 并且它起作用了。希望这不会破坏其他东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多