我正致力于在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似乎抓住了模板中的所有内容,而不仅仅是儿童内容)。
我应该采取什么方法来实施?
答案 0 :(得分:4)
=
或==
,而不是-
,则Slim仅捕获子内容。只需使用= content_for :area do
代替- content_for :area do
注意:显然此问题特定于Sinatra风格的content_for
和yield_content
。显然,更复杂的Rails实现设法使用缓冲魔术来实现-
。