我可以删除Rails应用程序中的默认根目录而不创建新的根目录吗?

Dan*_*bbs 12 ruby ruby-on-rails url-routing

当创建一个新的Rails应用程序,默认情况下它提供在"欢迎使用Rails的"页面/,除非你指定替代rootroutes.rb.

我的应用程序目前仅从子路径(例如/api/v1/)提供服务,因此访问/应该产生404.我如何实现这一目标?

Dre*_*nmi 15

如果要呈现404响应,我可以考虑两种方法.

首先,您可以路由到Rack,并返回一个简单的404响应:

# config/routes.rb
root to: proc { [404, {}, ["Not found."]] }
Run Code Online (Sandbox Code Playgroud)

其次,您可以采用明显的路径并将根点指向返回的控制器操作404:

# config/routes.rb
root to: "application#not_found"

# app/controllers/application_controller.rb
def not_found
  render plain: "Not found.", status: 404
end
Run Code Online (Sandbox Code Playgroud)

第三种选择当然是路由到不存在的行为,但我不认为这是一个好主意,因为意图模糊不清,很容易被误认为.

  • [`:text` 选项已从 Rails 5.1 中的渲染中删除](https://github.com/rails/rails/commit/79a5ea9eadb4d43b62afacedc0706cbe88c54496)。可以使用`:plain` 选项代替。 (2认同)