2

我是 RoR 的新手,过去几天一直在努力设置我的环境(运行 Mountain Lion)。当我看到这节课时,我终于达到了可以发展的地步,并决定在 lynda.com 上开始试用。

到目前为止,学习 Rails 的原理和理论都很棒,但它是在 2010 年制作的,我发现 Rails 的主要版本之间有多少变化。例如,生成的项目不再包含脚本文件夹 - 这些只是使用Mac 命令行中的rails命令调用。

在上一课中,讲师生成了一个新的 rails 项目,添加了一个控制器:

class SayController < ApplicationController

  def hello
  end

end

并添加了一个视图(视图->说-> ['hello.rhtml'])

<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <p>Hello World</p>
    </body>
</html>

就是这样。接下来,他刚刚启动了 rails 服务器,跳到了 firefox,并输入了地址[http://localhost:3000/say/hello]。浏览器如您所愿显示文本“Hello World”。

但是,我得到“没有路线匹配 [GET] '/say/hello'”。我知道这是路线的问题,我只是找不到一个好的(和 RoR 4 特定的)用法解释。

在讲师项目中,默认情况下似乎使所有内容都可以正常工作的行是:

map.connect ':controller/:action/:id'

我尝试添加这个(我的 routes.rb 是在所有注释掉的情况下生成的),但它不起作用,我认为 RoR 4 约定是不同的。

那么 RoR 4 有默认路由吗?v4 是否不允许返回 null 或语法已更改的操作?

错误页面说我当前的路线是Rails.root: /Users/abcde/Sites/RoR/my_app/我运行 rails 服务器的地方,所以我不确定这是否重要。

路线跟踪和日志只是重申我的路线(/say/hello/)不存在),但如果需要,我可以发布它们。

4

2 回答 2

7

该语法似乎很旧,我会使用:

get '/say/hello'

如果这不起作用,我会指定控制器和操作:

get '/say/hello', to: 'say#hello'
于 2013-07-30T23:36:43.550 回答
0
match '/:controller/:action', :via => :get

应该管用!

于 2014-05-23T04:53:54.873 回答