当我在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日志来追踪问题。谢谢!
答案 0 :(得分:33)
您使用的是Rails 3吗?默认情况下,Rails 3 / webrick不会在生产模式下提供静态文件。您可以通过设置
轻松启用此功能 在config.serve_static_assets
文件中 true
到production.rb
。
答案 1 :(得分:0)
在Rails5中,你应该发表评论
"config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?"
config/enviroment/production.rb
中的