当我在test/dev中本地运行我的应用程序时,我的视图很好地出现了,一切都很愉快.当我尝试导航到我的远程服务器/本地生产服务器上运行的那些相同的erb文件时,我得到如下错误:
ActionController::RoutingError (No route matches "/stylesheets/scaffold.css")
Run Code Online (Sandbox Code Playgroud)
我在这里看过类似的问题,但没有一个能够解决我的问题.我找到答案的最接近的答案是第一个答案:样式表或JavaScript文件的Rails 404错误
据我所知,最好的办法是配置我的网络服务器以提供静态文件.我如何在本地/ Heroku上这样做?
更新
根据raidfive的建议,我将config.serve_static_assets从false更改为true,这解决了我的问题.但是,我看到它在production.rb中说Apache或nginx应该已经在提供静态资产.以这种方式提供静态资产是不是更好/更专业?如果是这样,如果我使用Heroku,我将如何达到预期的效果?
更新2
显然Heroku 会自动执行此操作,我有一个额外的逗号导致恶作剧.我能够使用以下提示查看扩展的Heroku日志来追踪问题.谢谢!
我已经在Heroku上安装了一些基本的应用程序没有问题,这个(Rails 3.1.3)似乎很好,因为它显示了Rails欢迎页面
public/index.html.erb
Run Code Online (Sandbox Code Playgroud)
但当我删除该页面然后设置
root :to => 'users#index'
Run Code Online (Sandbox Code Playgroud)
我遇到了问题.在heroku日志中,它表示存在路由错误
ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):
Run Code Online (Sandbox Code Playgroud)
有谁知道这是关于什么的?
2012-01-14T21:48:29+00:00 heroku[web.1]: Process exited
2012-01-14T21:48:33+00:00 app[web.1]: >> Thin web server (v1.2.6 codename Crazy Delicious)
2012-01-14T21:48:33+00:00 app[web.1]: >> Maximum connections set to 1024
2012-01-14T21:48:33+00:00 app[web.1]: >> Listening on 0.0.0.0:32570, CTRL+C to stop
2012-01-14T21:48:34+00:00 heroku[web.1]: State changed from starting to up
2012-01-14T21:48:35+00:00 app[web.1]: cache: [GET /] miss
2012-01-14T21:48:36+00:00 app[web.1]:
2012-01-14T21:48:36+00:00 app[web.1]:
2012-01-14T21:48:36+00:00 app[web.1]: Started GET "/assets/rails.png" for 216.251.147.10 at 2012-01-14 13:48:36 -0800
2012-01-14T21:48:36+00:00 app[web.1]:
2012-01-14T21:48:36+00:00 app[web.1]: …Run Code Online (Sandbox Code Playgroud)