Rails生成静态文件路由错误

时间:2011-02-08 00:52:21

标签: ruby-on-rails static heroku

当我在test / dev中本地运行我的应用程序时,我的观点很好,一切都很愉快。当我尝试导航到在远程服务器/本地生产服务器上运行的那些相同的erb文件时,我得到如下错误:

ActionController::RoutingError (No route matches "/stylesheets/scaffold.css")

我在SO上看过类似的问题,但没有一个能够解决我的问题。我在答案中找到的最接近的答案是第一个答案:Rails 404 error for Stylesheet or JavaScript files

据我了解,最好的办法是配置我的网络服务器来提供静态文件。我如何在本地/ Heroku上进行此操作?

更新

根据raidfive的建议,我将config.serve_static_assets从false更改为true,这解决了我的问题。但是,我看到它在production.rb中说Apache或nginx应该已经在提供静态资产。以这种方式提供静态资产是不是更好/更专业?如果是这样,如果我使用Heroku,我将如何达到预期的效果?

更新2

显然是Heroku does this automatically,我有一个额外的逗号导致恶作剧。我能够使用following tip查看扩展的Heroku日志来追踪问题。谢谢!

2 个答案:

答案 0 :(得分:33)

您使用的是Rails 3吗?默认情况下,Rails 3 / webrick不会在生产模式下提供静态文件。您可以通过设置

轻松启用此功能 在config.serve_static_assets文件中

trueproduction.rb

答案 1 :(得分:0)

在Rails5中,你应该发表评论

"config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?" 
config/enviroment/production.rb

中的