我正在努力在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 似乎抓取了模板中的所有内容,而不仅仅是子内容)。
我应该采取什么方法来实现这一点?