Rails使ってて、テンプレートエンジンにslimを採用して進めてたら、Gretel(パンくずリストのgem)を使うときに問題が発生した。
パンくずリストが表示されている辺りに以下のようにオブジェクトの中身が出現。
<Gretel::Renderer:0x007fdf69e6a8c0>
これは自分がslimを理解してなかったことで発生してた。
結論から言うと以下の変更で解決。
= breadcrumb :users
↓
- breadcrumb :users
GretelはERBの場合、テンプレートに以下のような記述をすることでパンくずが表示される。
<%= breadcrumb :users %>
なので、slimだと以下のようになる。
= breadcrumb :users
しかし、slimだと中身が出ちゃう。(ERBでやってないので、もしかしたらERBでも同じ...?)
そもそも、ERBは <%= >
のようにイコールをつけると、中身を評価した結果をHTMLとして表示してしまう。
それはslimも同じで = breadcrumb :users
と書くことで、Gretelのオブジェクトがそのまま出ちゃってる。
なので、評価した結果をHTMLとして表示しない書き方、ERBでいうと以下の記述。
<% breadcrumb :users %>
これをslimで書くと
- breadcrumb : users
このように書けば、中身は出ない。
以上だす。
追記
・公式のドキュメントに ERB の場合でも イコールはつけないよう書いてあるみたいです。