2011-10-09 4 views
1

ryan bates railscasts의 도우미 메서드를 ancestry에 사용하여 중첩 된 메시지를 표시합니다 (아래 코드는 완벽하게 작동 함).div에서 정렬되지 않은 목록으로 중첩 된 메시지 도우미 변경

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 잘 보이는, 그러나 목록 항목에는 값을 포함하지 않습니다. 내가 뭐 잘못하고 있니?

UPDATE

내가 같이하기 위해 생성 된 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> 

UPDATE :

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 

답변

3

ul 태그를 만든 다음 메시지를 렌더링합니다. 그렇게하면 HTML은 어떻게 생겼을까요?

ul 안에있는 내용은 중첩 된 li이어야합니다. 메시지를 렌더링하기 만하면됩니다.

비 순차 목록에 유효한 콘텐츠가 포함되도록 li 태그에 입력해야합니다.

관련 문제