# Assign Before Passing to render

Render parameters only accept variables — filter expressions in arguments silently fail or apply to the wrong value. Always assign filtered values to a variable first.

```liquid
{% comment %} BAD: filter inside render argument {% endcomment %}
{% render 'heading', title: 'sections.hero.title' | t %}
{% render 'price', amount: product.price | default: 0 %}

{% comment %} GOOD: assign first, then pass {% endcomment %}
{%- assign heading_title = 'sections.hero.title' | t -%}
{% render 'heading', title: heading_title %}

{%- assign display_price = product.price | default: 0 -%}
{% render 'price', amount: display_price %}
```

The `| t` and `| default:` filters look correct inline but Liquid parses them ambiguously — the filter may bind to the entire render tag instead of the value.
