2016-03-25 19 views
3

içindeki kimliğini artırmak için:Benim kodunda bu var bir <%= for %> görünüm yardımcı

<%= for empresa <- @empresas do %> 
    <%= render myProject.ComponentView, "smallPlacard.html", 
     smallPlacard_id: "1", 
     smallPlacard_class: "Company", 
     smallPlacard_mainText: company.name 
    %> 
<% end %> 

Ben smallPlacard_id otomatik olarak her render elemanı için artırılır olacağını istiyorum. Phoenix/işlevsel bir şekilde yapmanın en iyi yolu nedir?

cevap

6

Sen Enum.with_index/2 kullanabilirsiniz:

endeks bazlı 0 olduğu gibi bu örnekte 1 artırılır gelmiş
<%= for {empresa, id} <- Enum.with_index(@empresas) do %> 
    <%= render myProject.ComponentView, "smallPlacard.html", 
     smallPlacard_id: id + 1, 
     smallPlacard_class: "Company", 
     smallPlacard_mainText: company.name 
    %> 
<% end %> 

. Daha önce olduğu gibi bir diziye ihtiyacınız varsa, bunun yerine "#{id + 1}" kullanın. Eğer `Enum.with_index kullanabilmesi için bir cazibe gibi

+7

' Enum.with_index' alternatif olarak, ikinci argüman olarak bir 'offset' alır (@empresas, 1)' tek merkezli bir dizin için ve 'i + 1’i sadece' i' ile değiştirin. Bu, dizini birden çok yerde kullanmanız gerektiğinde özellikle yararlıdır. –

+0

Teşekkür ederim Patrick! –

1

eserler

<%= for {item, id} <- Enum.with_index(@items) do %> 
    <tr> 
    <td><%= id + 1 %></td> 
    </tr> 
<% end %>