RailsでViewのメソッドを作ってみる

今回作ってみるのは、

<div class="edge"/>
<p>Hello World!</p>
<div class="edge"/>

のように、あるタグ(p)をあるタグ(div)で囲むようなメソッドです。
Railsだとビューでこんな風に書きたいはず。

<% edge do %>
  <p>Hello World!</p>
<% end %>

これを実現するにはブロックを使って処理をします。ヘルパーにメソッドを書きます。

def edge(&block)
  concat( content_tag(:div, "", :class => "edge") )
  concat( capture(&block) ) if block_given?
  concat( content_tag(:div, "", :class => "edge") )
end

concatは<%= ... %>と同じ。content_tagはタグを生成します。captureは...よく分かりません^^
こんなことはJavaScriptでやればいいと言われそうですが、そんなことは言わずにRailsのメソッドだけだと必ず困るときが出てくるので、そのときのためにも自分でビューを好きなようにカスタマイズして作れる勉強をしておきたいですね。