gpt4 book ai didi

ruby-on-rails - haml_tag 直接输出到 Haml 模板

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:18 29 4
gpt4 key购买 nike

我的 HAML 模板的这个助手有什么问题?

  def display_event(event)
event = MultiJson.decode(event)
markup_class = get_markup_class(event)
haml_tag :li, :class => markup_class do
haml_tag :b, "Foo"
haml_tag :i, "Bar"
end
end

这是错误:

haml_tag outputs directly to the Haml template.
Disregard its return value and use the - operator,
or use capture_haml to get the value as a String.

模板是这样调用 display_event 的:

 - @events.each do |event|
= display_event(event)

如果我使用常规标记,它将扩展为以下内容

%li.fooclass
%b Foo
%i Bar

最佳答案

错误信息中的线索:

Disregard its return value and use the - operator,
or use capture_haml to get the value as a String.

来自 haml_tag 的文档:

haml_tag outputs directly to the buffer; its return value should not be used. If you need to get the results as a string, use #capture_haml.

要修复它,请将您的 Haml 更改为:

- @events.each do |event|
- display_event(event)

(即使用 - 运算符代替 =),或更改方法以使用 capture_haml :

def display_event()
event = MultiJson.decode(event)
markup_class = get_markup_class(event)
capture_haml do
haml_tag :li, :class => markup_class do
haml_tag :b, "Foo"
haml_tag :i, "Bar"
end
end
end

这将使该方法返回一个字符串,然后您可以在 Haml 中使用 = 显示该字符串。

请注意,您需要这些更改中的一个,如果您同时进行两个更改,它们将相互抵消,您将不会显示任何内容。

关于ruby-on-rails - haml_tag 直接输出到 Haml 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10488855/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com