通过ruby过滤器输出haml内容
当我使用通过ruby过滤器输出haml内容,ruby,haml,middleman,Ruby,Haml,Middleman,当我使用:ruby过滤器在haml中做一些简单的事情时,例如 :ruby to = comments > max_comments ? max_comments : comments (0...to).each do |i| comment = data[i] puts li_comment comment[0], comment[1], comment[2] end put语句将输出写入控制台。这表明 创建名为haml\u IO的IO对象,写入该对象的任何内
:ruby
过滤器在haml中做一些简单的事情时,例如
:ruby
to = comments > max_comments ? max_comments : comments
(0...to).each do |i|
comment = data[i]
puts li_comment comment[0], comment[1], comment[2]
end
put
语句将输出写入控制台。这表明
创建名为haml\u IO
的IO对象,写入该对象的任何内容都将输出
进入Haml文件
如何准确地使用haml_io对象写入haml文档,而不是写入控制台(我想我需要的不是
put
)?。。。呼叫接通了haml\U io
写入它的任何内容都会输出到Haml文档中
这种行为——旧的行为(版本4.0之前)是将任何写入标准的内容写入Haml文档,但这不是线程安全的
haml_io
是一个。重写代码以使用它时,代码的外观如下所示(假设前面定义了注释
,最大注释
和li_注释
):
haml_io
实际上是一个函数,因此您可以使用它的任何方法,例如haml_io.write
,haml_io.putc
,它会将输出重定向到您的文档。请注意,如果您使用的是渲染器而不是普通的,那么它的语法也会有所不同。看起来您只需要从筛选器返回所需的值
标准的haml API似乎都不起作用:
[46] pry(main)> Hamlit::Template.new() { ":ruby\n puts 'aaa'" }.render
aaa
=> ""
[47] pry(main)> Hamlit::Template.new() { ":ruby\n haml_io.puts 'aaa'" }.render
NameError: undefined local variable or method `haml_io' for #<Object:0x00007f9ec2f178a0>
from (__TEMPLATE__):1:in `__tilt_70159905806200'
[49] pry(main)> Hamlit::Template.new() { ":ruby\n 'aaa'" }.render
=> ""
我就此事发表了一篇文章,以供参考:
[46] pry(main)> Hamlit::Template.new() { ":ruby\n puts 'aaa'" }.render
aaa
=> ""
[47] pry(main)> Hamlit::Template.new() { ":ruby\n haml_io.puts 'aaa'" }.render
NameError: undefined local variable or method `haml_io' for #<Object:0x00007f9ec2f178a0>
from (__TEMPLATE__):1:in `__tilt_70159905806200'
[49] pry(main)> Hamlit::Template.new() { ":ruby\n 'aaa'" }.render
=> ""
[50] pry(main)> Hamlit::Template.new() { ":ruby\n return 'aaa'" }.render
=> "aaa"