如何在Slim中重用捕获的块并避免重复?

时间:2016-07-18 15:39:15

标签: ruby slim-lang

请看这段代码:

require 'slim'

SLIM = <<-SLIM
    - column do
        = 'Text '
SLIM

def column(&block)
    $column = block
end

#########

template = Slim::Template::new { SLIM }
template.render(self)


p $column.call
p $column.call
p $column.call

正如您所看到的,我已经捕获了块(它将'Text'字符串呈现)到$column全局变量,并将其调用3次。我希望会打印出来:

"Text "
"Text "
"Text "

但我看到了:

"Text "
"Text Text "
"Text Text Text "

如何捕获块并避免重复?

2 个答案:

答案 0 :(得分:0)

我认为这是因为你传递了$datat = $this->getDoctrine() ->getRepository('AppBundle:users') ->findOneBy(array('userId' => $userId)); 值的块,而= 'Text '中的=正在累积值,这就是你获得增量字符串的原因

为什么你不能多次拨打Slim

template.render(self)

答案 1 :(得分:0)

如果ypu在没有框架的情况下使用slim,则直接尝试p #{yield} 3次。