0

我在 rails 3.2.6 上安装了 ruby​​,当我执行 rails server

并访问 127.0.0.1:3000 它可以工作,但是当我生成一个控制器时,例如

rails 生成控制器主体

并访问 127.0.0.1:3000/somecontroller,浏览器显示以下错误:路由错误

没有路由匹配 [GET] "/principal" 尝试运行 rake 路由以获取有关可用路由的更多信息。

我需要做什么,这可以简单解释吗?

4

2 回答 2

2

问题是您没有指定任何操作,因此您的控制器“主体”为空,不会创建具有相似名称的视图,也不会创建任何路由。

你需要做:

rails generate controller principal index [show] [edit] [update] [create] [destroy]

控制器名称后面的名称是操作名称。既然您以单数形式说控制器“主体”,那么它可能意味着您拥有单一资源。如果您想使用复数形式,请确保您说“controller principals”。

你的路线应该显示:

resource :principal [ or :principals or multiple Restful routes ]
于 2012-07-27T23:03:13.903 回答
1

您需要编辑config/routes.rb以告诉路由器将您的请求路由到哪个控制器。rails 标准是使用 RESTful 路由,在您给出的示例中,这将等同于单个 Principal 资源。因此,您需要添加:

resource :principal

为该资源生成一组 RESTful 路由。您可以看到通过执行以下操作生成的路由:

rake routes

如果您不关心 REST,那么您可以简单地添加(假设 PrincipalController 有一个 index 方法):

match 'principal' => 'principal_controller#index'

有关路由的更多信息,请查看 Rails 指南中的这一章:

http://guides.rubyonrails.org/routing.html

您还可以通过将名称作为参数提供给rails generate controller命令,同时在控制器和路由中生成方法,例如:

rails generate controller principal index
于 2012-07-27T23:07:29.807 回答