First time with slim

More details at slim lang

What i’ve known so far

  • Emmet, its syntax quite similar to slim so the first time not suprise met a lots.
  • Razor, helps me a lots when combine dynamic code with static code in view
  • Strong knowledge in html/css, yeah, no doubt.

Syntax

1. Line indicators

| copy the line

' copy the line too but makes sure that a single trailing white space is appended

< inline html

- control code, append \ at the end if multiple lines, if line ends with , then no need \

= output (i.e. call a method) dynamic content. Can be used on the same line or nest it.

=> output with trailing white space, =< output with leading white space

== output without HTML escaping

/ code comment

/! html comment

/ closed tags (trailing)

: inline tags. ex: div: p a paragraph

Text content: 3 ways

  • Either start on the same line as the tag p this is the content
  • Or nest it, use the | like
p
  | A paragraph
  • Or rely on smart text instead
body
  h1
    This is the title

Attributes

Written directly after the tag, can use {...}, (...) or [...] to wrap the attributes

a[href='/url/to/link' title='a link'] this is the text

The text interpolation can be used too:

a [href='http://#{url}' title='#{url}'] go to the #{title}

Attribute merging

a class=['menu', 'menu_active']
a class=:menu,:menu_active

### Splat attrinutes

.card*{‘data-id’=>place.id, ‘data-url’=>place.url} Visit


turned into

```html
<div class='card' data-id="1" data-url="/u/r/l">Visit</div>

can use like so:

.card *method_which_returns_hash = place.name