为什么这个嵌套的 content_tag 无法正确呈现?
Why does this nested content_tag not render properly?
我的助手中有这个:
def favorites_count(node)
content_tag :span, class: "card-favorite-count" do
content_tag :i, class: "icon-heart"
node.cached_votes_total
end
end
在视图中这样调用:
<%= favorites_count(node) %>
这呈现了这个:
<span class="card-favorite-count"></span>
如何让它渲染整个东西?
编辑 1
根据下面@tolgap 的建议,我尝试了这个:
def favorites_count(node)
content_tag :span, class: "card-favorite-count" do
content_tag(:i, "" ,class: "icon-heart") + node.cached_votes_total
end
end
但是这并没有输出node.cached_votes_total
中的数字值。但它会以正确的语义顺序输出其他所有内容。这只是最后一部分还不能正常工作。
do
块中的最后一个表达式是 content_tag
的内容。所以将其更改为:
def favorites_count(node)
content_tag :span, class: "card-favorite-count" do
node.cached_votes_total + content_tag(:i, class: "icon-heart")
end
end
所以你将这两个连接在一起。当然,您现在需要对 node.cached_total_votes
进行 nil
检查。
所以我找到了答案。正确的解决方案如下所示:
def favorites_count(node)
content_tag :span, class: "card-favorite-count" do
concat(content_tag(:i, "" ,class: "icon-heart"))
concat(node.cached_votes_total)
end
end
请注意,我必须使用两个 concat()
方法,因为 concat 基本上就像对视图的 puts。 content_tag
基本上只是 returns 视图方法中的最后一行,因此要覆盖它我必须这样做。
本文来自this article and this SO answer.
我的助手中有这个:
def favorites_count(node)
content_tag :span, class: "card-favorite-count" do
content_tag :i, class: "icon-heart"
node.cached_votes_total
end
end
在视图中这样调用:
<%= favorites_count(node) %>
这呈现了这个:
<span class="card-favorite-count"></span>
如何让它渲染整个东西?
编辑 1
根据下面@tolgap 的建议,我尝试了这个:
def favorites_count(node)
content_tag :span, class: "card-favorite-count" do
content_tag(:i, "" ,class: "icon-heart") + node.cached_votes_total
end
end
但是这并没有输出node.cached_votes_total
中的数字值。但它会以正确的语义顺序输出其他所有内容。这只是最后一部分还不能正常工作。
do
块中的最后一个表达式是 content_tag
的内容。所以将其更改为:
def favorites_count(node)
content_tag :span, class: "card-favorite-count" do
node.cached_votes_total + content_tag(:i, class: "icon-heart")
end
end
所以你将这两个连接在一起。当然,您现在需要对 node.cached_total_votes
进行 nil
检查。
所以我找到了答案。正确的解决方案如下所示:
def favorites_count(node)
content_tag :span, class: "card-favorite-count" do
concat(content_tag(:i, "" ,class: "icon-heart"))
concat(node.cached_votes_total)
end
end
请注意,我必须使用两个 concat()
方法,因为 concat 基本上就像对视图的 puts。 content_tag
基本上只是 returns 视图方法中的最后一行,因此要覆盖它我必须这样做。
本文来自this article and this SO answer.