首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套capture_haml助手

嵌套capture_haml助手
EN

Stack Overflow用户
提问于 2014-07-27 20:50:01
回答 2查看 1.1K关注 0票数 0

我有以下两个助手方法:

代码语言:javascript
复制
def hello
  capture_haml do
    haml_tag :div, 'Hello'
  end
end

def hello_world
  capture_haml do
    hello # How can I call it here?
    haml_tag :div, 'World'
  end
end

我想打电话给hello in hello_world。我单独尝试了hellocapture_haml hellohaml_tag hello,同时也尝试了.html_safe,但是没有一个解决方案是可行的。

我怎么能这么做?

我真的宁愿使用capture_haml而不是直接使用haml_tag,因为我认为在视图中有

代码语言:javascript
复制
= hello_world

代码语言:javascript
复制
- hello_world

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-27 23:25:59

您的hello方法,因为它正在使用capture_haml,所以只返回一个字符串。当您在capture_haml块内调用hello_world方法时,它什么也不做--创建并返回字符串,但根本不使用它。因为它不是写到输出中的,所以它没有被capture_haml捕获。

您可以将字符串写入输出,这将强制capture_haml工作,使用haml_concat,它如下所示:

代码语言:javascript
复制
def hello_world
  capture_haml do
    haml_concat hello
    haml_tag :div, 'World'
  end
end

这是一个精心设计的例子,但我希望它能显示出正在发生的事情。capture_haml接受一个通常直接写入输出的块(通常是Haml源),并将其作为字符串返回。haml_concat接受一个字符串并将其写入输出,因此在某些方面与capture_haml相反。

票数 1
EN

Stack Overflow用户

发布于 2014-07-27 20:54:28

找到它:

代码语言:javascript
复制
def hello
  capture_haml do
    haml_tag :div, 'Hello'
  end
end

def hello_world
  capture_haml do
    haml_tag :div, hello
    haml_tag :div, 'World'
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24985539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档