【发布时间】:2011-07-09 11:12:06
【问题描述】:
我正在尝试使用 sinatra 和 activereord(使用 sinatra-activerecord gem)创建一个在线商店,但我在理解如何生成类别“树”(子类别和其他东西)时遇到了一些麻烦)。
分类数据库只包含分类名称和parent_id,activrecord模型如下:
class Category < ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :name
has_many :sub_categories, :class_name => 'Category',
:foreign_key => 'parent_id', :dependent => :destroy
has_many :products, :dependent => :destroy
belongs_to :parent_category, :class_name => 'Category'
end
我将如何制作我可以在模板中作为嵌套 ul 标记的东西(如果有区别,我会使用 haml)?
很抱歉问了这么多,但我从来没有真正使用过这类数据结构。
【问题讨论】:
-
不应该是这样的:
@sub = Category.find(...).sub_categories并在模板中遍历@sub以显示每个子类别。我不太确定,因为我没有使用 ActiveRecord -
@daddz:我打算这样做,但这将其限制在有限数量的子类别中。我宁愿拥有它,这样多少类别都没关系(我认为这意味着我想要一种递归的东西,但我不确定)
-
只列出当前“选定”类别的子类别不是更聪明吗?我想您的类别深度越高,请求所需的时间就越长,因为它每次都必须遍历所有子类别。
-
我想要一个完整的嵌套 ul 树菜单类型的东西。有 javascript 手风琴类型的东西可以隐藏子菜单和东西。我想我可能已经找到了一种方法来使用 haml 助手做我想做的事......我们会看看我该怎么做
-
我想通了!只要 Stack Overflow 允许,我就会发布它
标签: ruby activerecord sinatra