我在 rails 3.2.6 上安装了 ruby,当我执行 rails server
并访问 127.0.0.1:3000 它可以工作,但是当我生成一个控制器时,例如
rails 生成控制器主体
并访问 127.0.0.1:3000/somecontroller,浏览器显示以下错误:路由错误
没有路由匹配 [GET] "/principal" 尝试运行 rake 路由以获取有关可用路由的更多信息。
我需要做什么,这可以简单解释吗?
我在 rails 3.2.6 上安装了 ruby,当我执行 rails server
并访问 127.0.0.1:3000 它可以工作,但是当我生成一个控制器时,例如
rails 生成控制器主体
并访问 127.0.0.1:3000/somecontroller,浏览器显示以下错误:路由错误
没有路由匹配 [GET] "/principal" 尝试运行 rake 路由以获取有关可用路由的更多信息。
我需要做什么,这可以简单解释吗?
问题是您没有指定任何操作,因此您的控制器“主体”为空,不会创建具有相似名称的视图,也不会创建任何路由。
你需要做:
rails generate controller principal index [show] [edit] [update] [create] [destroy]
控制器名称后面的名称是操作名称。既然您以单数形式说控制器“主体”,那么它可能意味着您拥有单一资源。如果您想使用复数形式,请确保您说“controller principals”。
你的路线应该显示:
resource :principal [ or :principals or multiple Restful routes ]
您需要编辑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