link_toの第一引数にタグを入れる

module AppHelper
  def icon(name)
    "<i class='icon-#{name}'></i>".html_safe
  end
end
# view
<%= link_to "#{icon(:home)}家のリンク", "/home" %>

iconヘルパーでhtml_safeしているのだけどlink_toで実行される頃には、別の文字列インスタントになっているのでタグがサニタイズされて表示されてしまう。

<%= link_to "#{icon(:home)}家のリンク".html_safe , "/home" %>

と書いてもいいんだけどヘルパーの中で済ませておきたい気持ちがする。


こういう場合ブロックで渡すとスッキリようです。

<%= link_to "/home" do %>
  <%= icon(:home) %>
  <%= "家のリンク" %>
<% end %>