2017-05-16 2 views
1

을 예로 들어이 템플릿 비트 보자 : 당신이 첫번째 경우/현재 인덱스/반복을 확인할 수있어 다양한 프레임 워크에서비약에서 EEx :지도 또는 컬렉션을 통해 반복하면서 현재 반복을 Determinig

<%= if (length thread.posts) > 0 do %> 
    <%= for post <- thread.posts do %> 
     <%= for post <- thread.posts do %> 
      <%= render "post.html", post: post %> 
     <%= end %> 
    <% end %> 
<%= end %> 

을 (또는 마지막으로) 템플릿 코드의 컬렉션을 반복하면서 Elixir/Phoenix는 비슷한 기능을 제공합니까? 예를 들어 첫 번째 반복에서 특정 템플릿 파일을 렌더링 한 다음 다른 모든 반복에 대해 다른 템플릿 파일을 렌더링한다고 가정 해 보겠습니다.이 작업을 수행하는 것이 가장 좋습니다.

나는 현재 반복을 추적하기 위해 변수를 설정하는 것을 고려해 봤지만, Erlang에서 변수의 불변의 성질이 이것을 가능하게하거나 바람직하지 않게 만드는 것처럼 보이지 않는다.

답변

4

Enum.with_index 잘 작동

<%= if (length thread.posts) > 0 do %> 
    <%= thread.posts |> Enun.with_index |> Enum.map(fn {post, inx} -> %> 
     <%= for post <- thread.posts do %> 
      <%= render "post.html", post: post %> 
     <%= end %> 
    <% end) %> 
<%= end %> 

편집 원래의 코드 라인에 더 있으려면 ...

<%= if (length thread.posts) > 0 do %> 
    <%= for {post, inx} <- Enum.with_index(thread.posts) do %> 
     <%= for post <- thread.posts do %> 
      <%= render "post.html", post: post %> 
     <%= end %> 
    <% end %> 
<%= end %> 
+1

감사합니다! 'Enum.with_index'는 제 경우에 완벽하게 작동합니다. – nitomoe

관련 문제