Hardwiredでcontent_forとyield_contentのサポートを実装する作業をしています。
Sinatra :: Contribの実装が機能しないため、より単純なバージョンを試しました。
module ContentFor
def content_for(key, &block)
content_blocks[key.to_sym] << block.call
return ""
end
def content_for?(key)
content_blocks[key.to_sym].any?
end
def yield_content(key, *args)
content_blocks[key.to_sym].join
end
private
def content_blocks
@content_blocks ||= Hash.new {|h,k| h[k] = [] }
end
end
残念ながら、これはコンテンツを繰り返します(content_forは、子コンテンツだけでなく、テンプレート内のすべてを取得するようです)。
これを実装するにはどのようなアプローチを取る必要がありますか?