2012-10-03 22 views
6

tengo este código:mejor manera de escribir @ instances.count> 0

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

Siento que debe haber una mejor manera de escribir esto.

Busco algo como:

<% if @states.not_empty? %> 

me di cuenta que es pequeño cambio, pero sería una limpieza de bienvenida.

Respuesta

8

es probable que desee de 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

qué 'cualquiera?' ActiveRecord? 'any?' pasa por una colección enumerable y devuelve verdadero si el predicado pasado en el bloque devuelve verdadero para ** cualquier elemento ** en la colección. El OP quiere probar la colección como un todo – iGbanam

+2

Para un 'Array' (o específicamente,' Enumerable'), sí, pero el uso del OP de ERb sugiere que tal vez esté trabajando con una colección ActiveRecord. 'ActiveRecord :: Relation'' any? 'No requiere un bloque, solo comprueba si la colección está vacía o no. (Aunque, la versión de 'Array' * tampoco requiere * un bloque). –

+1

Hay una versión con un bloque que escaneará la lista buscando coincidencias, pero esto es opcional. – tadman

8

¿Qué tal

<% unless @states.empty? %> 
Cuestiones relacionadas