2011-02-02 110 views
0

我正在跟随来自railstutorial.org的Michael Hartl的Screencast。我只有一小部分的PHP,html和css经验,并且我可以用bash命令,但面向对象的语言对我来说是全新的。Railstutorial.org Ruby on Rails路由问题

问题出在这里:我有一个名为sample_app的应用程序。在命令行:

.../sample_app$ rails generate controller Pages home contact 

现在,当我看的routes.rb:

SampleApp::Application.routes.draw do 

    get "pages/home" 

    get "pages/contact" 

当我看pages_controller我看到:

class PagesController < ApplicationController 

     def home 
     end 

     def contact 
     end 
end 

当我尝试去到“localhost:3000/pages/home”我收到以下错误页面:

Routing Error

No route matches "/pages/home"

我怀疑还有别的东西怎么回事,因为我创建的文件夹公共静态HTML文件,并不能得到它为加载:

这里是我的公共静态页面:

<html> 
<h1> TACO!</h1> 
    <body> 
     <p> testing <p> 
    </body> 
</html> 

当我尝试导航为 “localhost:3000/taco.html” 我得到同样的错误类型:

Routing Error

No route matches "/taco.html"

  • 编辑:顺便说本地主机:由自身3000母鹿s的加载index.html“欢迎来到轨道等待”页面就好..

你会惊讶多久我一直在试图找出这一点。我有一种感觉,这不是一个超级简单的修复,或者是一件非常错误的事情。一方或另一方...

只要你知道: 的Rails 3.0.3 红宝石1.8.7(2010-01-10 PATCHLEVEL 249)的i486-linux下] 宝石1.4.2

任何想法?这很好,可能是一种RTFM类型的交易,如果是这样告诉我,我会更难看...

回答

0

我想通了。我是个假人。铁轨仍然在我的旧应用程序的背景中运行服务器...

而且我想我知道它是如何发生的,但我也不知道它。当我为其他应用程序启动服务器时,我想我记得在做:

rails s & 

这样我就可以继续使用终端窗口。但是,这会导致不能够很容易地用Ctrl C.

所以我做lsof -i :3000

这outputed关闭服务器回落的问题:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
ruby1.8 20667 kevin 5u IPv4 7193288  0t0 TCP *:3000 (LISTEN) 

所以后来我把它打死了:

kill -9 20667 

从谷歌当然有一点帮助...甜!感谢您的帮助,知道它在别人的最终而不是我的工作是一个很好的开始,我通过筛选文档无论如何学习了很多其他的东西...

0

我已经重新创建了你的应用程序到目前为止,它工作正常,我会建议你检查你的安装Rails和宝石文件。

编辑。我使用rails 3,它工作正常。

0

好吧,它看起来像你使用的教程是一个Rails 2教程。在Rails 3中,路由语言改变了。你想要的是这样的。

SampleApp::Application.routes.draw do 
    match "/home" => "pages#home" 
    match "/contact" => "pages#contact" 
end 

然后,您将创建 “应用程序/视图/页/ home.html.erb” 和 “应用程序/视图/页/ contact.html.erb”。无论你放在这两个html文件中,当你到/ home或/ contact时都会被提供。变量在控制器文件app/controllers/pages.rb中定义。如果你定义:

def contact 
    @contact = 'John Smith' 
end 

然后你可以在“app/views/pages/contact.html.erb”这样访问它。

<h1>Contact name: <%= @contact %></h1> 
+0

有趣。在教程截屏中,Michael正在使用Rails 3.0.0候选版本,因此当时可能仍然使用旧版的路由语言。虽然我很困惑:为什么我的版本(rails 3.0.3为我创建旧的路由语言,当我做了“rails生成控制器页面主页联系人”? – Kevin 2011-02-02 16:07:30

+0

我希望我不是一个讨厌,但它会帮助如果我向你展示了我的宝石清单或其他任何东西?一旦我在这里找到正确的道路,我就可以自学多一点,但现在对我来说,这是直奔西方...... – Kevin 2011-02-02 16:12:24

0

感谢您张贴您的答案,我有同样的问题会发生。我不知道所有这些和杀的是什么,但我关闭终端与服务器运行,然后重新编号$ rails generate controller Pages home contact,然后运行$ rails server,此后我的本地主机:3000/pages/home工作如第81页所示。