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

StackOverflow https://stackoverflow.com/questions/1801756

我第一次在我的工作项目中使用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”和“仅”键入哈希和参数悬挂它们,我不能确切地解决我应该使用它们,也没有什么好处。

有人能帮我直接吗?

有帮助吗?

解决方案

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

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

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

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

其他提示

老实说, Rails路由指南将以简单的措辞为您提供一个很好的解释。你可以得到。只要知道资源路线== RESTful路线就可以了。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top