Rails:简单的路由问题

时间:2011-05-20 21:19:29

标签: ruby-on-rails ruby localhost

这应该相当容易。我正在关注一个相当过时的视频课程,但我还是想明白这一点:

我创建了一个名为“Say”的控制器,后者又创建了一个say_controller.rb。在那里,我创建了一个名为'hello'的新方法,所以say_controller的内部看起来像这样:

class SayController < ApplicationController
    def hello
        respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @derps }
        end
    end

end

然后,我在/ app / view / say /下创建了一个hello.html.erb,里面有一些html。如果您尝试在localhost:3000 / say / hello访问它,则会出现路由错误。所以我把它添加到routes.rb:

match 'say/hello' => 'say#hello'

这是问题 - 如果你运行rails generate scaffold Derp,那么你会看到路线

resources:derps

那是唯一能够存在的东西。如果没有特定的匹配命令,Rails如何知道路由到它?即我有点看到这里发生了什么,但我想理解这个理论。 更重要的是,在将来手动创建视图和控制器时我需要依赖什么(我甚至必须这样做吗?) - Rails中的标准过程是为每个人手动为routes.rb添加一行视图/控制器?

Merci:)

1 个答案:

答案 0 :(得分:4)

resources及其单数变体resource路由说明符实际上同时创建了许多路由,希望能够更轻松地定义应用程序的URL显示方式。

您可以在rake routes列表中查看生成的路线。其中每个都可以使用一系列match语句手动指定,但通常这不是一种非常有效的方法。

使用resources的原因是为了鼓励遵守标准的REST约定。