今日、foreach を使用すると、奇妙な動作が発生します。dataset
JSON ドキュメントを取り込む があります。その一部は配列であり、これをpick()
foreach に送信します。これが私のグローバルブロックです:
global {
dataset appserver <- "http://imaj-app.lddi.org:8010/list/popular" cachable for 1 hour;
popular = appserver.pick("$..images")
}
まず、ページを設定するルールが 1 つあります。次のようになります。
rule setup {
select when web pageview "www\.google\.com"
pre {
imagelist = <<
<div id="462popular" style="margin-left:auto;margin-right:auto;width:450px">
<p>Popular images from the CS 462 <a href="http://imaj-web.lddi.org/">Image Project</a></p>
<span class="image"></span>
</div>
>>;
}
prepend('#footer', imagelist);
}
そして、これが機能しないルールです。
rule images {
select when web pageview "www\.google\.com"
foreach popular setting (image)
pre {
thumburl = image.pick("$..thumburl");
viewurl = "http://imaj-web.lddi.org/view?imagekey=" + image.pick("$..imagekey");
html = <<
<span class="image"><a href="#{viewurl}"><img src="#{thumburl}" style="border:none"/></a></span>
>>;
}
after('#462popular .image', html);
}
次のような結果が得られます (スクロールバーのつまみが小さいことに注意してください)。
ここで何が起こっているのですか?