Я бы попробовал что-то вроде:
def page_header(title=nil, subtitle=nil)
[
title && content_tag(:h1, title),
subtitle && content_tag(:h3, subtitle)
].join.html_safe
end
Хотя это технически не эквивалентно - в него будут включены теги, даже если заголовок не нулевой, а пустой - он, вероятно, будет делать то, что вы хотите вэто дело.
Если вы хотите получить фантазию:
MAPPINGS = [[:title, "h1"], [:subtitle, "h3"]]
def page_header(options = {})
MAPPINGS.map {|e| options[e[0]] && content_tag(e[1], options[e[0]]) }.join.html_safe
end
Затем вы можете позвонить:
page_header :title => "Foobar", :subtitle => "Woohoo"
И это будет работать.Я бы сказал, что второй помощник уродливее.