Rails 3.1 ActionController::RoutingError (没有路由与 [GET] "/assets/rails.png" 匹配)

25

标准的新Rails应用程序会出现无法显示rails.png的问题。

ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):

我尝试将.png文件移动到assets、assets/images、以及旧的位置'public'或'public/images',并更改页面,但没有任何帮助。如果您遇到并解决,请回答。我自己尝试了大约20种不同的组合。

版本: 'rails','3.1.0.rc4'


1
看起来这里有一个/assets/目录权限的问题。 - fl00r
当然,但我从未在其他Rails版本的此计算机上的其他新应用程序中看到过这种情况。我希望能找到有经验/解决此问题的人。 - Michael Durrant
是的,这涉及到权限问题,执行 chmod 777 images/rails.png 可以解决,但并没有真正解决问题。我之前在其他 Rails 应用中从未遇到过这种情况,如果为此图像执行该操作,我对其他资源是否也会出现类似问题感到非常担心。 - Michael Durrant
可能是重复的问题:No route matches [GET] "/assets - Marc-André Lafortune
2个回答

31

我曾经遇到一个类似的错误。在我的情况下,我使用标准的WEBrick在Mac OSX上以生产模式启动了Rails服务器。它由于以下这行代码而引发了错误:

config.serve_static_assets = false

在 config/environments/production.rb 文件中设置了这个选项。

这是因为在大多数生产环境中,Web 服务器自身会处理此问题。

看起来你遇到了不同的问题,但我会在这里将其发布给其他遇到此错误的人。


1
这对我来说解决了问题 - 在整个网络上搜索后,这让我意识到如何使它与webrick一起工作。我强烈支持这个。 - David
1
很高兴能帮忙 :) 真遗憾看到有些人莫名其妙地点了个踩... 我相信很多人会觉得这很有用。 - tybro0103
1
它对我也起作用了。现在我想知道如何在本地运行生产环境而无需更改此配置,因为在我的生产机器上它必须是“false”。有什么想法吗? - seixasfelipe
1
@seixasfelipe 是的 - 创建一个与生产环境完全相同但该行不同的新环境。 - tybro0103

9

这一定是rc4问题,因为最终版本没有这个问题。

11/27/11 - 我现在想知道这是否只是由于引入了Rails 3.1中的资产管道,需要运行 rake assets:precompile 命令(从 app/assets 编译和复制图像、css和js到 public/
如果有人发现是这种情况,请添加评论!


谢谢您指出这个问题,我猜在学习 RoR 3.0 教程的时候,到了 4.1.2 节会有一些人遇到同样的问题。;-) - cvk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接