这应该相当容易。我正在关注一个相当过时的视频课程,但我还是想明白这一点:
我创建了一个名为“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:)
答案 0 :(得分:4)
resources
及其单数变体resource
路由说明符实际上同时创建了许多路由,希望能够更轻松地定义应用程序的URL显示方式。
您可以在rake routes
列表中查看生成的路线。其中每个都可以使用一系列match
语句手动指定,但通常这不是一种非常有效的方法。
使用resources
的原因是为了鼓励遵守标准的REST约定。