Condicional .nil?

Buenas, tengo una pequeña duda, a ver si alguien me puede echar una
mano:

Tengo la siguiente sentencia:

<% @homes = Home.find(:all, :conditions => [“type_id = ? AND
habitaciones >= ? AND location_id = ? AND lavabos >= ?”, @cerca.type_id,
@cerca.habitaciones, @cerca.location_id, @cerca.lavabos]) %>

Y ahora tengo que listar el resultado de @homes, por lo que hago un:

<% for @home in @homes %>

Hasta aquí todo funciona, pero me gustaría controlar que realmente hay
alguna @home en @homes, con lo que se me ha ocurrido hacer un

<% if @homes.nil? %>
No hay resultados
<%else%>
Listar resultados
<%end%>

El problema es que @homes.nil no sucede nunca, aunque el Home.find no
devuelva ningun resutado con esas condiciones…

Alguien me puede echar una mano y decirme com saber si @homes esta
vacío?

Muchas grácias, espero haberme explicado.

Tenes que usar @homes.blank?

saludos,
Juan P…

On 9/10/07, David R. [email protected] wrote:

Listar resultados

<%end%>

Creo que buscás el método #blank? al cual responden varias de las
clases básicas de Ruby (siempre y cuando estés trabajando con Rails o
ActiveSupport)

<% if @homes.blank? %>

<% else %>

<% end %>

#blank? devuelve true cuando el receptor es nil o está “en blanco”:
para un Array, cuando está vacío; para un String, cuando no tiene
ningún caracter significativo.

irb(main):005:0> [].blank?
=> true
irb(main):006:0> “”.blank?
=> true
irb(main):007:0> " ".blank?
=> true
irb(main):008:0> [1].blank?
=> false

Saludos

o @homes.any? que en el caso de arreglos es un poco mas claro.

OK,

Siempre me sorprende Rails por las vueltas que le doy a las cosas y lo
senzillas que son en realidad… :S

Muchas grácias

Tengo la siguiente sentencia:

<% @homes = Home.find(:all, :conditions => [“type_id = ? AND
habitaciones >= ? AND location_id = ? AND lavabos >= ?”, @cerca.type_id,
@cerca.habitaciones, @cerca.location_id, @cerca.lavabos]) %>

Un consejo, no accedas a la base de datos desde la vista. Estaras
pasando por encima del MVC.

Pedro Del G.

Email : [email protected]