我正在使用Gretel gem将痕迹痕迹添加到我自定义构建的照片库中。
图库模型之间的关系是:
收集:
has_many :children, class_name: "Collection", foreign_key: "parent_id"
belongs_to :parent, class_name: "Collection", foreign_key: "parent_id"
has_many :albums
专辑:
has_many :photos, :dependent => :destroy
belongs_to :collection
然后我将一些Gretel面包屑定义为:
crumb :collection do |collection|
link collection.title, gallery_collection_path(collection)
if collection.parent
parent :collection, collection.parent
else
parent :gallery
end
end
crumb :albums do |parent_collection|
link parent_collection.title, gallery_collection_albums_path(parent_collection, :albums)
parent :collection, parent_collection
end
在导航时我会在我到达相册后立即得到跟踪的跟踪:
主页>画廊>节日>主题公园>奥尔顿塔>奥尔顿塔
第一个“Alton Towers”的网址是
/集合/ 617
,第二个是:
/集合/ 617 /相册
我认为与我的Collections控制器有关的事情搞乱了,因为如果集合中没有子节点,我的Collections Show操作会重定向到我的Albums Index操作(因此需要显示相册列表)
收集控制器是:
def index
@size = :medium
@title = 'Gallery'
@collections = Collection.roots
end
def show
@collection = Collection.find_by_id(params[:id])
if @collection.has_children?
@collections = @collection.children
@size = :medium
@title = @collection.title
else
redirect_to [:gallery, @collection, :albums]
end
end
关于如何解决此问题的任何想法,以便在查看我的相册索引页面时获得以下所需的输出?:
主页>画廊>节日>主题公园>奥尔顿塔
答案 0 :(得分:0)
通过在收集crumb中添加一些额外的逻辑来解决这个问题,看看孩子是否是一张专辑,如果是这样,它会跳过为该步骤输出的碎屑