【问题标题】:Rails Something is Wrong... (noob)Rails 出了点问题……(菜鸟)
【发布时间】:2012-03-24 06:22:02
【问题描述】:

我是一个菜鸟,正在学习 Steve Holzner 的《Beginning Ruby on Rails》一书。他告诉我制作一个名为 hello_controller 的控制器,编辑控制器使其显示

class HelloController < ApplicationController
    def there
    end 
end

然后他告诉我创建一个名为 there.rhtml 的文档,其中包含一些简单的 HTML,并将其放在 views/hello 目录中。 然后,我启动 Rails 服务器,导航到 localhost:3000/hello/there,HTML 的结果应该出现在页面上, 我明白了:

Routing Error

No route matches [GET] "/hello/there"

Try running rake routes for more information on available routes. 

【问题讨论】:

  • 'rake routes' 的结果是?
  • 另外,您可能需要检查您正在阅读的书的日期——如果您使用.rhtml 来查看您的观点,那么您使用的是旧版 Rails(您知道,也许两年前,甚至更久!!:-)。从为 Rails 3.1 或更高版本编写的书开始——发生了很大的变化。
  • 在另一篇关于 SO 的帖子中对路线有一些很好的解释。 [stackoverflow.com/questions/5733101/…

标签: ruby-on-rails ruby controller


【解决方案1】:

http://guides.rubyonrails.org/routing.html

您需要使用 there 操作向 hello 控制器添加路由。路由的文件通常在

config/route.rb

例如,如果你添加

match '/hello/there' => 'hello#there'

到你的路由文件,你应该看到 /hello/there 将路由到你正确的控制器和动作。但是,您需要了解的路线远不止我在这里向您展示的内容,因此请查看我给您的链接!

【讨论】:

    【解决方案2】:

    为了最快的解决方法,请尝试在浏览器中输入以下网址(注意结尾):

    localhost:3000/hello/there/0
    

    Ken Li 给出了一些很好的建议。这里有一点解释:你的路由文件可能默认只解释模式/[controller_name]/[action_name] 之后的几个路由,并且'there'不是它会识别的少数动作名称之一(直到你改变你的路由。 rb 文件)。但是,对于遵循 /[controller_name]/[action_name]/[id] 模式的 url,它应该有一个包罗万象的功能。

    (别担心:您的操作实际上不需要对 url 末尾的 id 执行任何操作。只是如果 id 存在,您的 rails 应用程序将识别该模式。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多