link_toにspanタグなどのDOM(HTML)を入れる[Rails]

link_tospanを入れる方法

以下のようにブロック構文を使うことでlink_tospanを含めることができます。

<%= link_to '/path' do %>
  <span>text</span>
<% end %>

これを書いた経緯と解決まで link_toにspanタグなどのDOMを入れたいことがありました。

link_tospanをそのまま入れてみる

<%= link_to '<span>text</span>', '/path' %>

エスケープされて以下のようになってしまいます。

&lt;span&gt;text&lt;/span&gt;

Ruby on Rails API

Ruby on Rails API の説明ではこう書いてありました。

link_to(body, url, html_options = {})
  # url is a String; you can use URL helpers like
  # posts_path

link_to(body, url_options = {}, html_options = {})
  # url_options, except :method, is passed to url_for

link_to(options = {}, html_options = {}) do
  # name
end

link_to(url, html_options = {}) do
  # name
end