我进行了快速搜索,但找不到直接的答案。 Rails 新手,只是想了解为什么是这种情况。如果有人可以指出显示它指向 index.html 的位置的代码片段(如果它存在),或者,如果这是错误的思考方式,那么正确的答案是什么,我将非常感激。
请您参考如下方法:
在 Rails 3 中,railties 定义了一个默认的中间件堆栈 (railties/lib/rails/application.rb),它允许每种类型的中间件访问请求调用。堆栈中的第一个模块是 ActionDispatch::Static(可以使用 config.serve_static_assets 禁用它)。静态中间件模块在 ActionPack (actionpack/lib/action_dispatch/middleware/static.rb) 中。其中的相关行是:
path = env['PATH_INFO'].chomp('/')
...
if file_exist?(path)
return @file_server.call(env)
@file_server 在上面被定义为一个 Rack::File,它在 rack/lib/rack/file.rb 中。它只是读取文件并将内容作为主体提供。
那么当你删除index.html时,file_exist呢?调用失败,只是将请求传递给下一个中间件,最终会到达正常的 Rails 路由器。