こんなの。
<% output_block_with_date do |t| %> 現在の時刻は、<%=h t %> です。 <% end %>
ヘルパー。
def output_block_with_date(&blk) concat capture(Time.now, &blk) end
concat は、<%= %> と同じような意味で、ビューに文字列を出力するメソッドです。
capture は、ブロック内のテンプレートを文字列に変換するメソッドです。
テスト。
describe '#output_block_with_date' do before do Time.stub!(:now).and_return Time.local(2009) helper.output_buffer = '' end it 'は、現時刻を渡したブロックを出力すること' do helper.output_block_with_date { |t| "今年は #{ t.year } 年" } helper.output_buffer.should == '今年は 2009 年' end end
ActionView::Base#output_buffer に出力内容が格納されていくっぽいので、これを活用します。
もっといい方法があったら、教えてください。