Edited at

Rails + slimの環境でGretel使おうとすると、'<Gretel::Renderer...>'のように中身が出ちゃう

More than 1 year has passed since last update.

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 の場合でも イコールはつけないよう書いてあるみたいです。