2010-08-05 6 views
2

나는이 게시물레일 멋진 중첩 된 세트 쇼 모든 고양이, 서브 고양이 및 하위 서브 고양이

Ruby on Rails - Awesome nested set plugin

을 보았다하지만 난 노드를 사용하지 않고 동일한 작업을 수행하는 방법에 대해 궁금? 또한이 노드가 코드 자체에서 정확히 무엇을하는지 궁금합니다.

내 카테고리보기 폴더에는 _category.html.erb 및 _full_categores_list.html.erb이 있습니다.

_category.html.erb에는 위 코드와 같은 코드가 있습니다.

<li> 
    <%= category.name %> 

<% unless category.children.empty? %> 
    <ul> 
     <%= render category.children %> 
    </ul> 
<% end %> 
</li> 

_full_categories_list.html.erb에는 다음 코드가 있습니다.

<ul> 
    <% YourModel.roots.each do |node| %> 
    <%= render node %> 
    <% end %> 
</ul> 

이 코드는 완벽하게 작동합니다. 그러나 _full_categories_list.html.erb 대신 이러한 파일의 중복을 만들고 싶다는 가정하에 가상적으로 _half_categories_list.html.erb를 만들었습니다.이 코드는 코드와 약간 다른 작업을 수행 할 수도 있습니다.

_full_categories_list.html.erb에서 위에 사용 된 것과 비슷한 코드를 사용하면 _category.html.erb가 계속 호출됩니다.

나는 모든 고양이, 서브 고양이, 그리고 _half_categories_list.html.erb를 사용하여 하위 서브 고양이 대신 _category.html.erb의 _half_category.html.erb 같은 파일을 보여줄 수있는 방법

절반 범주와 전체 카테고리는 각 파일에서 다른 것을하고 있음을 나타내는 이름입니다. 나는 이것이 의미가 있기를 바랍니다. 기본적으로 위 링크에서 코드의 기능을 복제하고 싶지만 _half_category.html.erb 파일에 다른 기능을 넣으려고하기 때문에 _category.html.erb 대신 _half_category.html.erb를 사용하십시오.

답변

2

먼저 :partial:collection 옵션이있는 render을 사용하여 _full_categories_list.html.erb를 작성하는 간단한 방법이 있습니다.

<ul> 
    <%= render :partial => :category, :collection => YourModel.roots %> 
</ul> 

위의 코드는 _full_categories_list.html.erb과 같습니다.

rootsawesome_nested_set에 의해 제공되는 named scope이다. 모델에 범위를 더 추가 할 수 있습니다 (예 : half_roots이라는 이름의 범위) (자세한 방법은 링크 참조). 그런 다음 당신이 필요로하는 특별한 방법으로 범주를 렌더링하는 _half_category.html.erb을 사용할 수 있습니다

<ul> 
    <%= render :partial => :half_category, :collection => YourModel.half_roots %> 
</ul> 

다음과 같이 염두에두고

, _half_categories_list.html.erb가 기록 될 수 있습니다.