如何使用content_tag呈现嵌套消息

时间:2012-12-05 11:58:40

标签: ruby-on-rails-3 content-tag

我想使用content_tag(例如

)呈现嵌套的ul li列表
<ul>   <li>
    <div>Message1</div>    </li>    <li>
     <div>Message 2</div>
    </li> </ul>

我有像这样的帮助方法

def nested_messages(messages)
    messages.map do |message, sub_messages|
      content_tag :ul do
        content_tag :li do
          render(message) + nested_messages(sub_messages)
        end
      end 
    end.join.html_safe
end

我没有得到嵌套列表。我的输出看起来像这样

<ul>
  <li>
    <div>Message 1</div>
   </li>
</ul> 
<ul>
  <li>
    <div>Message 2</div>
  </li>
</ul>

我做错了什么?如何获得正确的嵌套列表?

1 个答案:

答案 0 :(得分:2)

messages.map块嵌套在ul内容标记块中:

def nested_messages(messages)
  content_tag :ul do
    messages.map do |message, sub_messages|
      content_tag :li do
        render(message) + nested_messages(sub_messages)
      end
    end.join
  end.html_safe
end