首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跟踪Rails中的路由错误

跟踪Rails中的路由错误
EN

Stack Overflow用户
提问于 2010-10-21 10:58:11
回答 3查看 1.3K关注 0票数 1

我正在通过我的第一个RoR教程,并出现了一个动作控制器路由错误。我至少检查了我的代码8次,但无法解决问题。我相信将来这种事还会再发生。我的问题是,总的来说,我应该如何解决这些错误?如果相关的话,我使用的是RVM、Rails 3.0.1和Ruby1.9.2。

为了参考我目前正在处理的内容,以下是一些文件:

pages_controller.rb

代码语言:javascript
复制
class PagesController < ApplicationController
  def home
    @title = "Home"
  end

  def contact
    @title = "Contact"
  end

  def about
    @title = "About"
  end

  def help
    @title = "Help"
  end
end

layout_links_spec.rb

代码语言:javascript
复制
require 'spec_helper'

    describe "LayoutLinks" do

      it "should have a Home page at '/'" do
        get '/'
        response.should have_selector('title', :content => "Home")
      end

      it "should have a Contact page at '/contact'" do
        get '/contact'
        response.should have_selector('title', :content => "Contact")
      end

      it "should have an About page at '/about'" do
        get '/about'
        response.should have_selector('title', :content => "About")
      end

      it "should have a Help page at '/help'" do
        get '/help'
        response.should have_selector('title', :content => "Help")
      end
    end

routes.rb

代码语言:javascript
复制
SampleApp::Application.routes.draw do
  match '/contact', :to => 'pages#contact'
  match '/about',   :to => 'pages#about'
  match '/help',    :to => 'pages#help'

  root :to => 'pages#home'
end

终端输出

代码语言:javascript
复制
Started GET "/pages/home" for 127.0.0.1 at 2010-10-21 06:51:01 -0400

ActionController::RoutingError (No route matches "/pages/home"):


Rendered /Users/zak/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.8ms)

还运行了并获得了

代码语言:javascript
复制
ZKidds-MacBook-Pro:sample_app zak$ rake routes
(in /Users/zak/rails_projects/sample_app)
contact  /contact(.:format) {:controller=>"pages", :action=>"contact"}
  about  /about(.:format)   {:controller=>"pages", :action=>"about"}
   help  /help(.:format)    {:controller=>"pages", :action=>"help"}
   home  /home(.:format)    {:controller=>"pages", :action=>"home"}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-21 11:07:21

您没有在任何地方定义/pages/home的路由。您只将根/PagesController及其home方法相匹配。因此,请求/是可行的,但/pages/home不行。

您要么需要定义:

代码语言:javascript
复制
match "/pages/home" => "pages#home"

或添加具有附加方法home的资源页。

代码语言:javascript
复制
resources :pages do
  get "home", :on => :collection
end

以下是一些有用的路由资源:

  • http://guides.rubyonrails.org/routing.html
  • http://railscasts.com/episodes/203-routing-in-rails-3
票数 1
EN

Stack Overflow用户

发布于 2010-10-21 11:11:05

正如@Matt所说,您还没有定义/pages/home路由,它只与/匹配。

在处理路由问题时,我能给你的最好的建议是在终端上运行rake routes (在终端上运行rails server等),它输出应用程序的所有可识别路由的列表。

票数 1
EN

Stack Overflow用户

发布于 2011-08-16 19:38:22

如果您正在学习Rails教程,它说要删除index.html

http://ruby.railstutorial.org/chapters/filling-in-the-layout#top

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3986685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档