ruby-on-rails – 用于动态页面的Rails嵌套路由
发布时间:2020-12-17 02:09:29 所属栏目:百科 来源:网络整理
导读:在我的Rails应用程序中,我有存储在数据库中的页面. 例如: id: 1name: 'About'slug: 'about'parent_id: nullid: 2name: 'Team'slug: 'team'parent_id: 1id: 3name: 'Cameron'slug: 'cameron'parent_id: 2 slug用于通过路由访问它们,如下所示: match '/:slug
在我的Rails应用程序中,我有存储在数据库中的页面.
例如: id: 1 name: 'About' slug: 'about' parent_id: null id: 2 name: 'Team' slug: 'team' parent_id: 1 id: 3 name: 'Cameron' slug: 'cameron' parent_id: 2 slug用于通过路由访问它们,如下所示: match '/:slug' => 'pages#show',:via => :get,:as => :page 所以我可以访问这些页面: /about /team /cameron 我想要做的是使用parent_id,以便路由成为: /about/team/cameron 这可以单独使用路由来实现吗?或者我还需要做其他事情吗? 解决方法
在
Friendly gem处获得帮助,它可以简化使用slug的路由.
定义路线的替代选项 据我所知,使用动态paramlinks的路由没有好办法,你可以创建一个命名路由来捕获漂亮的嵌套页面路径: get '/p/*id',:to => 'pages#show',:as => :nested_pages 此外,请确保更新页面对象的slug以具有嵌套的URL,即:将父页面的slug附加到它.例如: page1.slug = '/about' page2.slug = '/about/team' # team is a child of about page3.slug = '/about/team/cameron' # cameron is a child of team 这样你就可以做到这一点 get '/p/*id',:as => :nested_pages or pages 因此,为了使这项工作,您可以更改Page模型类中的generate_slug方法: def generate_slug name_as_slug = name.parameterize if parent.present? self.slug = [parent.slug,(slug.blank? ? name_as_slug : slug.split('/').last)].join('/') else self.slug = name_as_slug if slug.blank? end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读