2011-06-14 2 views
2

나는 사이트가 있습니다. 항목을 표시 할 때 항목에 대한 첫 번째 검토는 들여 쓰기가되어서는 안되며 이후 항목은 들여 쓰기가되어야합니다.트리 렌더링하기 렌더링 컬렉션 사용하기

HTML 출력 같은 것을 보일 것입니다 :

<ul> 
    <li>review for item 1</li> 
    <li> 
    review for item 2 
    <ul> 
     <li>2nd review for item 2</li> 
     <li>3rd review for item 2</li> 
    </ul> 
    </li> 
</ul> 

출력을 I은 다음과 같습니다납니다 :

<ul> 
    <li>review for item 1</li> 
    <li> 
    review for item 2 
    </li> <!-- wrong --> 
    <li> <!-- wrong --> 
    <ul> 
     <li>2nd review for item 2</li> 
     <li>3rd review for item 2</li> 
    </ul> 
    </li> 
</ul> 

_reviews.html.erb

<%= render :partial => "review_item", :collection => @reviews, :locals => { :reviews_local => @reviews } %> 

_review_item. html.erb

<% if review_item_counter == 0 %> 
<ul> 
<% end %> 

    <li> 
    <% if @current_reviewable != review_item.id %> 
     <% @current_reviewable = review_item.id %> 
      <%= review_item.body %> 

    <% else %> 

     <% reviews_local.slice!(review_item_counter, reviews_local.size) %> 
     <%= render :partial => "review_item", :collection => reviews_local, :locals => { :reviews_local => reviews_local } %> 

    <% end %> 
    </li> 

<% if review_item_counter == reviews_local.size - 1 %> 
</ul> 
<% end %> 
+0

나는 iteration과 div로 훨씬 쉽게 이것을 할 수 있었다. 재귀는 실제로 두통을 일으키고 있습니다. – Dex

답변

0

Ryan Bates의 screencast을 살펴 보시기 바랍니다. 주제와 정확히 일치합니다.

+0

그러나 순서가 지정되지 않은 목록을 사용하지 않으므로 문제가 더 어려워집니다. – Dex