这是我在 ruby on rails application spree commerce 中找到的一个辅助方法。
我试图更好地理解这里发生了什么,特别是第 12 行的 capture() 方法,这是我以前从未见过的。如果给定了一个块,它就会捕获它,否则就没有内容。但是 capture() 是从哪里来的呢?它在做什么?
11 def hook(hook_name, locals = {}, &block)
12 content = block_given? ? capture(&block) : ''
13 result = Spree::ThemeSupport::Hook.render_hook(hook_name, content, self, locals)
14 block_given? ? concat(result.to_s) : result
15 end