繁体   English   中英

有人可以用明确的方式向我解释,外行人的条款是什么与Ruby on Rails中的映射资源和命名路由有什么关系?

[英]Can someone please explain to me in clear, layman's terms what the deal is with mapped resources and named routes in Ruby on Rails?

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

虽然我理解route.rb文件中map.connect函数的要点,但我不理解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”类型的哈希和参数悬挂在它们之间,我无法确切地知道何时应该使用它们,也没有什么好处。

谁能让我直截了当?

命名路线就是这样; 附加了名称的路由,以便在您想要生成URL时轻松引用它。 除此之外,它可以消除歧义。

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

:has_many参数可以让你说某种东西有子东西。 例如,您可以说map.resources :sections, :has_many => [:questions] 这意味着问题属于某个部分,这将反映在网址和路径中。 你会得到像'/sections/27/questions/12'这样'/sections/27/questions/12'网址,并命名为'section_questions''section_questions'路线。

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

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

当DHH在2006年的第一个RailsConf中将它引入Rails社区时,我们都在理解资源和REST方面苦苦挣扎,所以难怪你在理解这个概念时遇到了麻烦。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM