了解嵌套路由在 Rails 中的工作原理
Understanding how nested routes work in Rails
我有点困惑。
这是我的路线文件:
当我尝试这个时,link 不会像预期的那样(cl 是我的清单):
<%= page_checklist_path(cl) %>
link 的渲染字符串为:
/pages/31/checklists/4
但应该是
/pages/4/checklists/31
这里有什么问题?
当使用这样的嵌套路由时,您必须提供两个实例作为参数。请参阅 Rails 指南中的 creating paths and URLs from objects。这意味着你需要像这样调用你的路由助手:
<%= page_checklist_path(page, checklist) %> # or
<%= page_checklist_path(checklist.page, checklist) %>
如果你想避免这种情况,我建议使用 shallow nesting。无论如何,清单的ID在您的数据库中是唯一的,因此在嵌套路线时实际上不需要页面ID。
有趣的事实:示例中 URL 中的 4
不是页面的 ID(因为您根本没有提供页面)。但是 nil
has the ID 4
在 Ruby.
我有点困惑。 这是我的路线文件:
当我尝试这个时,link 不会像预期的那样(cl 是我的清单):
<%= page_checklist_path(cl) %>
link 的渲染字符串为:
/pages/31/checklists/4
但应该是
/pages/4/checklists/31
这里有什么问题?
当使用这样的嵌套路由时,您必须提供两个实例作为参数。请参阅 Rails 指南中的 creating paths and URLs from objects。这意味着你需要像这样调用你的路由助手:
<%= page_checklist_path(page, checklist) %> # or
<%= page_checklist_path(checklist.page, checklist) %>
如果你想避免这种情况,我建议使用 shallow nesting。无论如何,清单的ID在您的数据库中是唯一的,因此在嵌套路线时实际上不需要页面ID。
有趣的事实:示例中 URL 中的 4
不是页面的 ID(因为您根本没有提供页面)。但是 nil
has the ID 4
在 Ruby.