我正在通过我的第一个RoR教程,并出现了一个动作控制器路由错误。我至少检查了我的代码8次,但无法解决问题。我相信将来这种事还会再发生。我的问题是,总的来说,我应该如何解决这些错误?如果相关的话,我使用的是RVM、Rails 3.0.1和Ruby1.9.2。
为了参考我目前正在处理的内容,以下是一些文件:
pages_controller.rb
class PagesController < ApplicationController
def home
@title = "Home"
end
def contact
@title = "Contact"
end
def about
@title = "About"
end
def help
@title = "Help"
end
endlayout_links_spec.rb
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
endroutes.rb
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终端输出
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)还运行了并获得了
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"}发布于 2010-10-21 11:07:21
您没有在任何地方定义/pages/home的路由。您只将根/与PagesController及其home方法相匹配。因此,请求/是可行的,但/pages/home不行。
您要么需要定义:
match "/pages/home" => "pages#home"或添加具有附加方法home的资源页。
resources :pages do
get "home", :on => :collection
end以下是一些有用的路由资源:
发布于 2010-10-21 11:11:05
正如@Matt所说,您还没有定义/pages/home路由,它只与/匹配。
在处理路由问题时,我能给你的最好的建议是在终端上运行rake routes (在终端上运行rails server等),它输出应用程序的所有可识别路由的列表。
发布于 2011-08-16 19:38:22
如果您正在学习Rails教程,它说要删除index.html
http://ruby.railstutorial.org/chapters/filling-in-the-layout#top
https://stackoverflow.com/questions/3986685
复制相似问题