【问题标题】:Routing Error Ruby on Rails路由错误 Ruby on Rails
【发布时间】:2012-07-28 07:17:15
【问题描述】:

我在 rails 3.2.6 上安装了 ruby​​,当我执行 Rails 服务器

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

rails 生成控制器主体

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

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

我需要做什么,能简单解释一下吗?

【问题讨论】:

  • 查看您的 routes.rb 可能会有所帮助。
  • 谢谢,还是不行,即使在 :3000 后面加上任何名字,错误也是一样的
  • 如果您将控制器定义为principal,那么路由可能是/principals 您尝试过这样吗?

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


【解决方案1】:

问题是你没有指定任何动作,所以你的控制器'principal'是空的,不会创建具有相似名称的视图,也不会创建路由。

你需要做的:

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

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

您的路线应该显示:

resource :principal [ or :principals or multiple Restful routes ]

【讨论】:

    【解决方案2】:

    您需要编辑 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多