我知道我的问题有点含糊,但我不知道如何描述它。我在很多地方问过,似乎没有人明白我为什么要这样做。但请耐心等待,我会解释为什么我想要这样的东西。
我正在使用 Liquid 模板来允许用户在我的网站上创建一些动态页面。对于那些不知道的人,Liquid 使用他们的一个名为 LiquidDrop 的类来向用户公开某些项目。液滴中的任何方法都可以被 Liquid 模板调用。
类 PageDrop < Liquid::Drop
定义初始化(页面)
@page = 页
结尾
定义名称
@page.name
结尾
定义儿童
PagesDrop.new(@page.children)
结尾
结尾
类 PagesDrop < Liquid::Drop
定义初始化(页)
@pages = 页
结尾
def group_by
GroupByDrop.new(@pages)
结尾
全部定义
@pages.all
结尾
默认尺寸
@pages.size
结尾
结尾
例如,我希望能够做到这一点:
@page_drop = PageDrop.new(@page) @page_drop.children # 得到一个子数组
代替
@page_drop.children.all
为什么我会掉页?
因为我希望能够干净地将我可以对一组页面执行的方法和我可以对单个页面执行的方法分开。这使我可以像这样对页面进行分组:
@page_drop.children.group_by.some_method_here_that_the_group_drop_contains
为了让我的用户更简单,我不希望他们必须考虑将“全部”添加或不添加到放置实例以获取它包含的“默认”对象。重申:
@pages_drop = PagesDrop.new(Page.all) @pages_drop == @pages_drop.pages #我希望这是真的,以及 @pages_drop == @pages_drop.all
我从哪里得到这个想法?
在 Rails 中,当您对范围(关联对象)(@person.friends)执行某些操作时,它似乎会返回数组:@person.friends.each,对于@person.friends 中的人