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

时间:2015-11-05 10:00:20

标签: ruby-on-rails ruby url-routing

创建新的Rails应用程序时,默认情况下它会提供一个"欢迎使用Rails" /页面,除非您在root中指定备用routes.rb

我的应用程序目前仅提供来自子路径的内容(例如/api/v1/),因此访问/应该会生成404.我该如何做到这一点?

2 个答案:

答案 0 :(得分:11)

如果您想呈现404回复,我可以想到两种方法。

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

# config/routes.rb
root to: proc { [404, {}, ["Not found."]] }

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

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

# app/controllers/application_controller.rb
def not_found
  render plain: "Not found.", status: 404
end

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

答案 1 :(得分:1)

如果删除它,您将看到Rails的默认问候语,其中包括有关您的环境的一些技术信息。这不太可能是您需要的行为。

我这样解决了:

Rails.application.routes.draw do
  namespace :admin do
    ...
  end

  # To prevent users from seeing the default welcome message "Welcome aboard" from Rails
  root to: redirect('admin/sign_in')
end