link_to で内部にタグがあったりする時はブロックを使いましょう
Zurb-FoundationとかTwitter bootstrapを使ってると、アイコンをリンク内に含めたくなったりしますよね。こんな感じに
[crayon lang=”html”]
Reload
[/crayon]
でもこれをそのまま `link_to` で囲んで
[crayon lang=”html”]
<%= link_to “ Reload”,”http://example.com/reload” %>
[/crayon]
とすると``タグがHTMLエスケープされて悲しい事態になるんです。
対策
なのでそういう時は `link_to` さんはブロックが取れるのでブロックを使って処理しましょう。ブロックの返り値がリンクのテキストになります。
[crayon lang=”html”]
<%= link_to “http://example.com/reload", class: ‘reload’ do %>
Reload
<% end %>
[/crayon]
ちなみに `button_to` も同じような関数なのでこういう風にかけます。
[crayon lang=”html”]
<%= button_to “”, class: ‘small radius’ do %>
Reload
<% end %>
[/crayon]
これ知らない時に必死にHTMLエスケープされないために何をすればよいのかを探しまくったのは今では良い思い出でもなんでもありません。時間返せ。
参考
[ruby on rails – link_to in helper with block – Stack Overflow][1]