ERBの中でlink_to
を用いて外部サイトへのリンクを生成する際に、URLにRubyのコードを埋め込んで動的に変化させたかったのですが、やり方がわからなかったため、備忘録としてまとめます。
目次
問題
もともとは次のようなコードで静的なリンクが実装されていました。(リンク先は外部サイトの想定です)
<div class="categories">
<ul>
<% @categories.each do |category| %>
<li><%= link_to category.name, "https://sample-app.com/articles/faq/categories/1", target: '_blank', rel: 'noopener noreferrer' %></li>
<% end %>
</ul>
</div>
URL末尾の1
の部分をcategory.id
の値に変更してリンクの遷移先を動的に変えたかったのですが、やり方がわかりませんでした、、。
解決策
結論として、以下のように書けばOKです。
<div class="categories">
<ul>
<% @categories.each do |category| %>
<li><%= link_to category.name, "https://sample-app.com/articles/faq/categories/#{category.id}", target: '_blank', rel: 'noopener noreferrer' %></li>
<% end %>
</ul>
</div>
#{}
で囲むことで、Rubyのコードを埋め込んでリンクを動的に変化させることができました。
おわりに
ふだんはVue.jsでフロントエンド開発をすることが多く、ERBには不慣れなので逆に苦戦しました。
コメント