Syntax: Code
Unbuffered code
Unbuffered code starts with - does not add any output directly.
- name = assigns.name
div(id="name-#{name}")
Bufferred code
Buffered code starts with = and outputs the result of evaluating the Elixir expression in the template. For security, it is first HTML escaped.
p= "Hello, #{name}"
Unescaped code
Buffered code may be unescaped by using !=. This skips the HTML escaping.
div!= markdown_to_html(@article.body) |> sanitize()
Conditionals and Loops
For if, cond, try, for, an end statement is automatically inferred.
= if assigns.name do
= "Hello, #{@name}"
They also need to begin with =, not -. Except for else, rescue and so on.
= if assigns.current_user do
| Welcome.
- else
| You are not signed in.
Multiline
If a line ends in one of these characters: , ( { [, the next line is considered to be part of the Elixir expression.
= render App.PageView,
"index.html",
conn: @conn
You may also force multiline by starting a line with = immediately followed by a newline. Any text indented after this will be treated as an Elixir expression, regardless of what each line ends in.
=
render App.PageView,
"index.html",
[conn: @conn] ++
assigns