我搜索了我的应用程序目录,找不到默认rails欢迎页面的html页面.我也无法在routes中找到默认欢迎登机页面的路由.rb.我的rails应用程序如何将http://localhost:3000/路由到我应用程序中不存在的页面?

rails服务器生成以下信息:

Started GET "/" for 127.0.0.1 at 2013-07-31 02:00:13 -0600
Processing by Rails::WelcomeController#index as HTML
  Rendered /Users/7stud/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb (0.1ms)
Completed 200 OK in 3ms (Views: 2.5ms | ActiveRecord: 0.0ms)

所以在我看来,好像有一个控制器埋在Ruby 的某个地方来处理请求.

推荐答案

由于"欢迎"页面不再位于"4号"页面中.正如您已经检测到的,它位于一个RailsRuby 中.

所以你已经自己回答了这个问题;"欢迎登上"页面——就你而言——位于/Users/7stud/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb

要清除它,请按照页面上的说明进行操作.基本上是:

  1. 创建一个控制器
  2. config/routes.rb中添加根路由,以路由到新创建的控制器.

至于对应用程序的请求如何最终到达railties内部的控制器,让我们深入研究一下gem:在Rails::Application::Finisher内部,我们发现:

initializer :add_builtin_route do |app|
  if Rails.env.development?
    app.routes.append do
      get '/rails/info/properties' => "rails/info#properties"
      get '/rails/info/routes'     => "rails/info#routes"
      get '/rails/info'            => "rails/info#index"
      get '/'                      => "rails/welcome#index"
    end
  end
end

在开发模式下运行时,此块会向应用程序添加一些路径——其中之一是"欢迎加入"操作的路径:get '/' => "rails/welcome#index"

与任何其他初始值设定项一样,这是在启动应用程序服务器(运行rails server或以任何方式运行)时完成的.在Finisher的情况下,它的所有初始值设定项在所有其他初始值设定项运行之后运行.

请注意这些路由是如何附加的,以便它们在Routeset中最后出现.这一点,再加上Rails使用它找到的第一个匹配路由的事实,确保了只有在没有定义其他路由的情况下才会使用这些默认路由.

Ruby-on-rails相关问答推荐

在has_many关系中由两个条件 Select

Rails文档的悲观锁定示例中的争用条件

mini_racer gem 0.8.0无法与Ruby 3.1.xBundle 安装

Rails 创建自定义函数/方法以及存储位置

复制我的活动时,活动描述没有复制过来

ActiveRecord 错误地转义 JSON 字符串

如何在 Ruby on Rails 中创建一个锚点并重定向到这个特定的锚点

无法连接 localhost:3000 ruby​​ on rails in vagrant

如何在 Rails 中使用 instance_eval 子句删除验证?

我如何存根 find_each 以在 rails 3 中进行 rspec 测试

Rails 服务对象与 lib 类

Rspec/Capybara 正在加载,循环要求被认为是有害的

Ruby gem 命名约定

导轨链接到:远程

Rails 控制台中手动更新属性值的验证问题

Ruby on Rails i18n - 想要在模型中翻译自定义消息

Rails 4模块的未初始化常量

Vagrant上的Rails 4.2服务器端口转发不起作用

让 bundler 为不同的平台使用不同的 gem

如何使用 url 连接到 postgresql