サイトが起動すると、サイトが高解像度のデバイスで表示されているかどうかを検出する単純な js スクリプトがあり、値が Cookie に保存されます。
{% if app.request.cookies.has('d_p_r') %}
{% set retina = app.request.cookies.get('d_p_r') %}
{% else %}
{% set retina = false %}
<script> ... </script>
{% endif %}
Retina 値がサイトのどこかに {{ retina }} を出力するように設定されていることを確認します。コンピューターでは「false」、iPad では「true」が返されます。ここまでは順調ですね。
問題は、ブール値にアクセスしようとしたときです。
{% if retina == true %}
<img alt="{{ alt }}" src="{{ ('img/' ~ img)|imagine_filter(filter) }}">
{% else %}
{% if big is defined %}
<img alt="{{ alt }}" src="{{ asset('img/' ~ img) }}">
{% else %}
<img alt="{{ alt }}" src="{{ ('img/' ~ img)|imagine_filter(filter ~ '@2x') }}">
{% endif %}
{% endif %}
{% if retina == true %} が正しく機能していません。== false に変更すると、あらゆる場所で Retina 画像が生成されます。{{ retina }} の値が false を返しているにもかかわらず、常に true を返しているかのようです。
ここで何が間違っているのかわかりません。{% if retina %} だけを試してみましたが、役に立ちませんでした。これを修正するすべての試行の間にキャッシュもクリアしました。