首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Railstutorial.org Rails路由问题

Railstutorial.org Rails路由问题
EN

Stack Overflow用户
提问于 2011-02-02 15:44:49
回答 4查看 1.3K关注 0票数 0

我跟着迈克尔·哈特尔在railstutorial.org的屏幕上走。我只有一点点PHP、html和css的经验,我可以使用bash命令,但是面向对象的语言对我来说是全新的。

问题是:我有一个名为sample_app的应用程序。从命令行:

代码语言:javascript
复制
 .../sample_app$ rails generate controller Pages home contact

现在,当我看routes.rb:

代码语言:javascript
复制
 SampleApp::Application.routes.draw do

    get "pages/home"

    get "pages/contact"

当我看pages_controller的时候,我看到:

代码语言:javascript
复制
  class PagesController < ApplicationController

      def home
      end

      def contact
      end
end

当我尝试转到“localhost:3000/page/home”时,我会得到以下错误页面:

路由错误

没有路线匹配“/页面/主页”

我怀疑这里还发生了其他事情,因为我在文件夹Public中创建了一个静态html文件,并且无法加载它:

这是我在公共场合的静态页面:

代码语言:javascript
复制
<html>
<h1> TACO!</h1>
    <body>
        <p> testing <p>
    </body>
</html>

当我试图导航到"localhost:3000/taco.html“时,会得到相同类型的错误:

路由错误

没有路由匹配"/taco.html“

  • 编辑:顺便说一下,localhost:3000本身确实加载了index.html“欢迎来到rails blah”页面,非常好..

你会惊讶于我这么久以来一直想弄明白这一点的。我有一种感觉,这要么是一个超级简单的修复,要么是一些严重的错误。一个或另一个..。

让您知道: Rails 3.0.3 ruby 1.8.7 (2010-01-10 patchlevel 249) i486-linux Gems1.4.2

有什么想法吗?这很可能是RTFM的一种交易,如果是这样的话,告诉我,我会更加努力.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-02 17:24:12

我想通了。我是个笨蛋。rails还在运行我以前应用程序的后台服务器..。

我想我也知道它是怎么发生的,我也不知道。当我为另一个应用程序启动服务器时,我记得我做了:

代码语言:javascript
复制
rails s &

这样我就可以继续使用终端窗口了。但是,这会导致无法使用Ctrl轻松关闭服务器的问题。

所以我做了lsof -i :3000

其结果是:

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

所以我杀了它

代码语言:javascript
复制
kill -9 20667

当然,在谷歌的帮助下.甜!谢谢你的帮助,知道它对别人有用,而不是我的,这是一个很好的开始,而且我也通过筛选那些文档学到了很多其他的东西。

票数 0
EN

Stack Overflow用户

发布于 2011-02-02 15:52:40

到目前为止,我已经重新创建了您的应用程序,它运行良好,我建议您检查一下Rails和gem文件的安装情况。

编辑。我使用的是rails 3,它工作得很好。

票数 0
EN

Stack Overflow用户

发布于 2011-02-02 15:59:21

看起来,您正在使用的教程是Rails 2教程。在Rails 3中,路由语言发生了变化。你想要的就像这样。

代码语言:javascript
复制
SampleApp::Application.routes.draw do
  match "/home" => "pages#home"
  match "/contact" => "pages#contact"
end

然后,您将创建“app/view/page/hom.html.erb”和“app/view/page/contact.html.erb”。无论您在这两个html文件中放入什么内容,当您转到/home或/contact时,都将提供服务。变量在控制器文件app/ controller /pages.rb中定义。如果你定义:

代码语言:javascript
复制
def contact
  @contact = 'John Smith'
end

然后,您可以像这样在“app/view/page/contact.html.erb”中访问它。

代码语言:javascript
复制
<h1>Contact name: <%= @contact %></h1>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4876513

复制
相关文章

相似问题

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