【发布时间】:2019-09-02 09:35:35
【问题描述】:
我有一个 json 对象,如下所示:
"results"=>{
"data"=>[
{
"id"=>"letters",
"values"=>["A", "B", "B", "X"]
},
]
}
我正在尝试计算A 的数量和B 的数量,然后添加它们。
这是我目前的代码:
require 'liquid'
Liquid::Template.error_mode = :strict
@template = Liquid::Template.parse('
{% assign letters = results.data | where: "id", "letters" %}
{{ letters }}
{% increment a_count %}
{% increment b_count %}
{% for letter in letters.values %}
{% if letter contains "A" %}
{% increment a_count %}
{% endif %}
{% if letter contains "B" %}
{% increment b_count %}
{% endif %}
{% else %}
The collection is empty.
{% endfor %}
{% assign count = a_count | plus: b_count %}
{{ a_count}} + {{ b_count }} = {{ count }}
')
print(@template.render(
"results"=> {
"data"=> [
{
"id"=> "letters",
"values"=> ["A", "B", "B", "X"]
},
]
}
), { strict_variables: true })
print(@template.errors)
但这不起作用,我得到了这个输出:
{"id"=>"letters", "values"=>["A", "B", "B", "X"]}
0
0
The collection is empty.
1 + 1 = 2
这很令人困惑,因为results.values 不是空的,我只为每个a_count 和b_count 调用一次increment,这应该将初始值设置为0。
print(@template.errors) 的输出只有:
{:strict_variables=>true}[]
如何计算letters.values 数组中有多少A 和多少B?
【问题讨论】: