開発環境
ruby 2.6.5
slim-rails
erb
では割と見る
<div class="comment-content" id ="this_comment_<%= comment.id %>"></div>
みたいなコードを slim
で書くにはどうすればいいか
.comment-content#this_comment_=comment.id
まずは愚直に slim
の文法に沿って書いてみる
するとうまく動作しない
ブラウザ検証ツールを見てみると
<div #this_comment_="3" class="comment-content"></div>
と変換される
変数展開はされてるんだけどされかたがおかしい
本来は
<div #this_comment_3 class="comment-content"></div>
となってほしいところ
.comment-content #this_comment_comment.id
変数展開されるはわかったから
そのまま comment.id
を入れてみる
すると
<div class="comment-content">#this_comment_comment.id</div>
id ではなく 要素の中身として出力されてしまった
.comment-content #="this_comment_#{comment.id}"
明示的に = ってすることもできるみたい
で、文字列を入れると思わせて変数展開をさせる
すると
<div #="this_comment_4" class="comment-content"></div>
ちゃんと出力された
ただ # がid に変化されてない
なので
.comment-content id="this_comment_#{comment.id}"
ってしてやると
<div id="this_comment_4" class="comment-content"></div>
きれいにいった