Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 列出液体对象的唯一数据_Ruby On Rails_Ruby_Liquid_Locomotivecms - Fatal编程技术网

Ruby on rails 列出液体对象的唯一数据

Ruby on rails 列出液体对象的唯一数据,ruby-on-rails,ruby,liquid,locomotivecms,Ruby On Rails,Ruby,Liquid,Locomotivecms,我需要能够在液体中的对象列表,并显示在一个特定的格式在页面上他们 如果我有一个对象(页面)数组,我需要能够以以下方式打印它们: 列出类别名称(page.category.name) 列出每个子类别名称以及每个子类别名称下的页面列表(page.subcategory.name和page.title) 通常在ruby中,我会简单地对页面进行分组,但在liquid中我不能这样做。我尝试的另一件事是为页面捕获唯一的类别和子类别列表,但我找不到从数组中获取唯一项目列表的方法。任何建议的帮助都会很好。我回答

我需要能够在液体中的对象列表,并显示在一个特定的格式在页面上他们

如果我有一个对象(页面)数组,我需要能够以以下方式打印它们:

列出类别名称(page.category.name)

列出每个子类别名称以及每个子类别名称下的页面列表(page.subcategory.name和page.title)


通常在ruby中,我会简单地对页面进行分组,但在liquid中我不能这样做。我尝试的另一件事是为页面捕获唯一的类别和子类别列表,但我找不到从数组中获取唯一项目列表的方法。任何建议的帮助都会很好。

我回答你的问题有点晚了,但这可能会帮助其他人解决同样的问题。它有点黑客化,就像流动逻辑一样,但它是有效的(至少对我来说,在Shopify上是有效的)

假设您有一个如下所示的“页面”数组:

pages = [
    { name: 'Page 1', category: { name: 'pants'  } },
    { name: 'Page 2', category: { name: 'pants'  } },
    { name: 'Page 3', category: { name: 'shoes'  } },
    { name: 'Page 4', category: { name: 'shirts' } },
    { name: 'Page 5', category: { name: 'shoes'  } }
]
此代码将仅返回唯一的类别名称:

{% assign delimiter = "," %}
{% assign names_str = "" %}
{% assign names = pages | map: 'category' | map: 'name' %}

{% for name in names %}
    {% assign names_arr = names_str | split: delimiter %}
    {% unless names_arr contains name %}
        {% assign names_str = names_str | append: delimiter | append: name %}
    {% endunless %}
{% endfor %}
{% assign names_uniq = names_str | remove_first: delimiter | split: delimiter %}
结果:

names_uniq => [ 'pants', 'shoes', 'shirts' ]

谢谢非常恼人的是,它是如此先进,而且不仅仅有一个
{%assign names\u uniq=names | unique%}
过滤器:-(