LoginSignup
1
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-14

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

1
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4