【问题标题】:Why do my routes not match?为什么我的路线不匹配?
【发布时间】:2014-01-11 02:39:59
【问题描述】:

我是 Rails 新手。我正在尝试在 rails 示例应用程序中启用命名路由的使用。当我执行以下操作并尝试在浏览器中访问该页面时,我得到 Action Controller: Exception Caught 作为标题,以及一条 no route matches 消息。

config/routes.rb

SampleApp::Application.routes.draw do
# root to: 'static_pages#home' #matches '/'
  root to: 'static_pages#home'

  match '/help', to: 'static_pages#help', via: [:get, :post] (*)
  match '/about', to: 'static_pages#about', via: [:get, :post] (*)
  match '/contact', to: 'static_pages#contact', via: [:get, :post] (*)
  [...comments...]
end

我的控制器中有必要的操作。我也有意见,但都不是错误信息。确切的错误信息如下:

No route matches [GET] "/static_pages/home"

我也尝试过root 'static_pages#home' 作为替代方案。依然没有。

(*) 当我删除 via: [:get, :post] 时,浏览器会抛出 RuntimeError 说,

你不应该在你的路由器中使用match 方法 指定 HTTP 方法。如果您想向两者公开您的操作 GET 和 POST,添加via: [:get, :post] 选项。如果你想暴露 您对 GET 的操作,在路由器中使用 get:而不是:匹配 “controller#action” 做:得到“controller#action”

【问题讨论】:

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


    【解决方案1】:

    root 是您访问 localhost:3000 时的路由,因此当您访问 'localhost:3000' 时,它与您的情况下的 static_pages/home 匹配。

    如果您还需要将 'localhost:3000/static_pages/home' 转发到相应的控制器,则需要另外定义路由。

    get 'static_pages/home'
    

    否则我认为没有必要在更改路由后重新启动服务器,除非当然有问题,但大多数情况下它并不能解决问题。

    【讨论】:

      【解决方案2】:
      1. 请记住,更改路由后,您必须重新启动服务器!!!

      2. 在我看来,当您的根路由定义 127.0.0.1:3000 时,您正试图在浏览器 URL 中打开 127.0.0.1:3000/static_pages/home

      PS 希望对你有帮助

      【讨论】:

        【解决方案3】:

        我认为这篇文章将消除你所有的疑虑, 我之前也遇到过类似的问题。

        实际上当你在浏览器中选择 URL 时,你会误 正在尝试访问

        local:3000/static_pages/home

        什么时候你应该尝试访问`

        local:3000/home
        

        正如你所关注的 教程,在正确的时间你会明白为什么“匹配”不是 接受,但暂时你应该继续你的“路线” 格式。 一件重要的事情是在提出任何问题之前你应该做一些研究,因为这个问题已经被包括我在内的其他几个人问过,所以没有必要发布重复的线程。我希望你一切都清楚。享受!!!

        这是类似的问题。 https://stackoverflow.com/a/19047811/2545197

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-05
          • 1970-01-01
          • 2017-10-15
          • 1970-01-01
          相关资源
          最近更新 更多