3

我第一次在我的工作项目中使用 Ruby,所以我仍然在某种程度上学习绳索(并且热爱它的每一分钟)。

虽然我了解map.connectroute.rb 文件中函数的要点,但我不了解 Rails 的“资源”和“命名路由”功能。我在这里有我的 Rails 书,并多次阅读,但我仍然不明白。我得到的命名路线 - 我认为它们要么是规则,要么是明确定义的,要么是由代码块计算的,但资源对我来说是一个完全的谜;我从它们身上看到的唯一一件事是,如果你想让一些很酷的东西工作,比如能够调用“resource_path”(以及它令人敬畏的相关方法系列),你就需要它们。

我目前的项目有:

map.resources :application_forms
map.resources :sections
map.resources :questions
map.resources :seed_answers
map.resources :question_types
map.resources :form_questions
map.resources :rules
map.resources :form_rules

..但是我的 Rails 书中有这种很棒的“has_many”和“only”类型的散列和参数,我无法准确计算出我应该在什么时候使用它们,也不知道有什么好处。

谁能让我直截了当?

4

3 回答 3

9

命名路线就是这样;带有名称的路由,以便您在要生成 URL 时可以轻松引用它。除其他外,它可以消除歧义。

资源基本上是您希望拥有路由来操作的“事物”。当您将“部分”定义为资源时,您所做的是说“我想要一条获取所有部分的路线。我想要一条添加新部分的路线。我想要一条编辑现有部分的路线。我想要一条路线来删除一个部分。” 之类的东西。这些路由指向标准化的方法名称,如indexnewedit等。这些路线中的每一条都将根据其内容分配一个名称;所以现在有一条名为'edit_section'.

参数让:has_many你说某种事物有子事物。例如,您可以说map.resources :sections, :has_many => [:questions]。这意味着一个问题属于一个部分,这将反映在 url 和路由中。你会得到像这样的 url'/sections/27/questions/12'和像'section_questions'.

参数说“:only只为这些动作制作路线”;如果您只想允许列出、查看和添加项目,而不是编辑或删除,则可以使用它。

于 2009-11-26T06:03:23.130 回答
1

老实说,Rails 路由指南会用尽可能简单的措辞给你一个很好的解释。只要知道资源路由 == RESTful 路由就可以了。

于 2009-11-26T06:29:35.793 回答
0

当 DHH 在 2006 年的第一届 RailsConf 上将资源和 REST 介绍给 Rails 社区时,我们都在努力理解资源和 REST,所以难怪你难以理解这个概念。

我承认今天对这些概念有更好、更最新的解释,但当时,在大卫的主题演讲之后,我写了一篇博文,在与其他与会者的讨论中,我试图理解和解释它. 它可能会对您有所帮助,因为您不会像最近的文章那样理所当然地了解有关 REST 的一切。

于 2009-11-26T08:55:08.637 回答