【问题标题】:Rails Tutorial - Named RoutesRails 教程 - 命名路由
【发布时间】:2013-01-07 01:27:20
【问题描述】:

我目前正在阅读 Michael Hartl 的 Rails 教程,但遇到了一个我无法理解的错误。

教程中有一节解释了如何在 routes.rb 文件中创建自定义 URI。本教程通过编码解释了这一点:

match '/about', to: 'static_pages#about'

应自动创建命名路由,如下所示:

about_path => '/about'
about_url  => 'http://localhost:3000/about'

接下来的部分通过用这些变量替换某些代码位来帮助您修复 rspec 测试。但是当我这样做时,我最终每次测试都失败了,因为找不到所有“自动创建的变量”......

谁能向我解释为什么找不到它们,或者我可以在哪里查看它们是否实际上已经创建。

【问题讨论】:

  • rake routes 是您的朋友,如果您想查看所有已知路线,如果您使用 3.2+,您还可以查看六分仪 gem github.com/schneems/sextant
  • 您可能还需要添加as: 'name' 选项:guides.rubyonrails.org/routing.html#naming-routes
  • 您还应该使用“get”这个词而不是 match,因为这定义了预期的请求类型。
  • 添加路由时,是否记得重启 Rails 服务器并重启 Spork?

标签: ruby-on-rails ruby railstutorial.org


【解决方案1】:

据我所知,如果您不使用as:,则不会获得命名路由。请参阅the guides 了解更多信息。

在您的示例中,您可以执行以下操作:

get '/about', to: 'static_pages#about', as: 'about'

【讨论】:

  • 当我这样做并使用 rake 路由检查是否已创建 about_path 时,我在结果对话框中寻找什么?
  • @ShawnTaylor 一直到左边,你应该看到about这个词。有点像about GET /about(.:format) static_pages#about
【解决方案2】:

你在用 spork 吗?尝试重启 spork 服务器

RSpec not finding my named routes

【讨论】:

    【解决方案3】:

    指令是这样添加一行:

    match '/about', to: 'static_pages#about', via: 'get'
    

    注意, via: 'get'

    【讨论】:

      【解决方案4】:

      我迟到了这个帖子,但我在教程的同一点遇到了同样的问题,但正如@pjam 之前提到的,我认为我们需要在 routes.rb 文件中添加 as: 'about' 选项,沿着与其他人一起寻求帮助和联系,如教程中所述。它为我解决了测试的问题,现在它们都通过了。

      【讨论】:

        猜你喜欢
        • 2012-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多