我在ancestry上使用来自ryan bates railcasts的辅助方法来显示嵌套消息(下面的代码完美无缺)。
def nested_messages(messages)
messages.map do |message, sub_messages|
render(message) + content_tag(:div, nested_messages(sub_messages), :class => "nested_messages")
end.join.html_safe
end
上面的代码将各个div嵌入树状结构中。
我想把它变成无序列表,所以我所做的就是:
def nested_messages(messages)
messages.map do |message, sub_messages|
content_tag(:ul, :class => "") do
render(message)
content_tag(:li, :class => "nested_messages") do
nested_messages(sub_messages)
end
end
end.join.html_safe
end
生成的html看起来很好,但列表项不包含任何值。我做错了吗?
更新
我希望生成的html看起来像这样:
<ul>
<li>Main Message</li> <!-- first message -->
<li>
<b>Message 1</b>
<ul>
<li>Message 1 subchild 1</li>
<li>Message 1 subchild 2</li>
</ul>
</li>
</ul>
更新2
我把它改成了这个并且它有效,多亏了戴夫:
def nested_messages(messages)
messages.map do |message, sub_messages|
#render(message) + content_tag(:div, sub_messages, :class => "nested_messages")
content_tag(:ul, :class => "") do
content_tag(:li, :class => "nested_messages") do
render(message) + nested_messages(sub_messages)
end
end
end.join.html_safe
end
答案 0 :(得分:3)
您创建了一个ul
标记,然后呈现该消息。如果你这样做,你的HTML会是什么样子?
ul
内的内容应该是嵌套的li
:您只需呈现消息。
您需要将其放在li
标记中,以便无序列表包含有效内容。