我在帮手中有这个:
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
Per @ 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
中的数字值。它以正确的语义顺序输出其他所有内容。这只是最后一部分还不起作用。
答案 0 :(得分:1)
do
的{{1}}块中的最后一个表达式是内容。所以改成它:
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
进行nil
次检查。
答案 1 :(得分:0)
所以我想出了答案。这就是正确的解决方案:
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基本上就像放置视图一样。 content_tag
基本上只是将方法中的最后一行返回给视图,所以要覆盖我必须这样做。
这来自this article和此SO answer。