有人可以用明确的方式向我解释,外行人的条款是什么与Ruby on Rails中的映射资源和命名路由有什么关系?
-
05-07-2019 - |
题
我第一次在我的工作项目中使用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
参数表示“仅为这些操作制作路线”;如果您只想允许列出,查看和添加项目,而不是编辑或删除,则可以使用它。