ruby-on-rails - 具有可覆盖树路径 slug 的 FriendlyID
问题描述
我目前正在使用 Ancestry 来管理结构为树的模型,尽管树的确切实现并不重要。
给定具有以下属性的模型:
class Item < ActiveRecord::Base
extend FriendlyId
attr_accessor :name :slug, :url_path
has_ancestry
acts_as_list scope: :ancestry
friendly_id METHOD, use: %i[slugged finders]
end
whereslug
是用户指定的,并且url_path
是 的完整友好 ID Item
,它是所有祖先项目的 s 的组合,slug
与/
例如/foo/bar/baz
,将指向一个带有 slug 的项目,该项目的baz
祖先带有 slugfoo
和bar
我尝试了以下方法:
class Item < ApplicationRecord
extend FriendlyId
friendly_id :path, use: %i[slugged finders]
acts_as_list scope: :ancestry, top_of_list: 0
has_ancestry
def path
:slug if ancestry.nil?
(ancestors.collect(&:slug) << slug).join('/')
end
end
但是,当给定相同的foo => [bar => baz]
项目时,结果foo-bar-baz
不是foo/bar/baz
-- 如何让我的 URL 路径与树位置与/
分隔符匹配?
解决方案
推荐阅读
- typescript - 具有隐式属性类型的 Typescript Generic
- reactjs - 使用 SWR 条件获取和 react-boostrap Accordion
- python - 特征选择嵌入方法显示错误特征
- java - 烟灰找不到没有主调用图的类
- javascript - React component props not getting rendered inside Next.js Page
- java - 从 API 中不断读取 JSON 的最有效技术是什么?
- sharepoint - MS Flow 从 TXT 文件填充 SharePoint 列表
- javascript - Javascript 和 Twitter API
- r - 如何在同一列中拆分以逗号分隔的元素?
- javascript - Chrome 扩展:为所有网络工作者修改内置功能