2012-10-03 4 views
6

mam ten kod:lepszy sposób napisać @ instances.count> 0

<% if @states.count > 0 %> # @states is an active record collection 

po prostu poczuć się jak nie powinno być lepszy sposób to napisać.

szukam czegoś podobnego:

<% if @states.not_empty? %> 

Zdaję sobie sprawę, to jest mała zmiana, ale byłoby to mile widziane porządki.

Odpowiedz

8

Prawdopodobnie chcesz ActiveRecord na any?

http://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-any-3F

<% if @states.any? %> 
    Do stuff here if @states has at least one result 
<% end %> 
+0

dlaczego 'dowolny?'? 'any?' wykonuje pętlę poprzez kolekcję przeliczalną i zwraca wartość true, jeśli predykat przekazany w bloku zwraca wartość true dla ** dowolnego elementu w kolekcji. OP chce przetestować kolekcję jako całość – iGbanam

+2

Dla 'Tablicy' (lub konkretnie,' Zmiennej'), tak, ale użycie OP przez ERb sugeruje, że może pracuje z kolekcją ActiveRecord. 'ActiveRecord :: Relation' 'any?' Nie wymaga bloku, sprawdza tylko czy kolekcja jest pusta czy nie. (Chociaż, 'wersja Array' nie * wymaga * bloku, albo.) –

+1

Istnieje wersja z blokiem, który zeskanuje listę dla dopasowań, ale jest to opcjonalne. – tadman

8

Jak o

<% unless @states.empty? %> 
Powiązane problemy