nil and empty

First, hats off to rails and the community. I’m
definitely a convert.

Question: I’m constantly outputting information like
so:

<% unless item.empty? %>

Item: <%= item %>

<% end %>

But I’m finding that depending on where item is pulled
from, the item will either be empty (ie form), or null (ie db). Short of
always checking for nil first then empty, what’s the easiest way to just
use empty and have that stop throwing errors if it’s called on a null
object?

Thanks,

Chad

Chad Arimura wrote:

First, hats off to rails and the community. I’m definitely a convert.

Question: I’m constantly outputting information like so:

<% unless item.empty? %>

Item: <%= item %>

<% end %>

But I’m finding that depending on where item is pulled from, the item
will either be empty (ie form), or null (ie db). Short of always
checking for nil first then empty, what’s the easiest way to just use
empty and have that stop throwing errors if it’s called on a null object?

Thanks,

Chad

>

Try calling blank? instead of empty?

Matthew Margolis
blog.mattmargolis.net

You can have a little rescue clause in there if you like.

Item: <%= item rescue “N/A” %>

That should stop the errors from coming. If you search around
this has been discussed a number of times. Also checkout
rails.techno-weenie.net I think there are also some questions there as
well.

Hope that helps.

Thanks guys.. Ya I searched a bit and for some reason didn't seem to
find a definitive answer.

Blank works perfectly for now!

Daniel N wrote:

> Short of always checking for
> nil first then empty, what's the easiest way to just use empty and have that
> stop throwing errors if it's called on a null object?
>
You can have a little rescue clause in there if you like.

Item: <%= item rescue "N/A" %>

That should stop the errors from coming.

As well as a multitude of other possible errors that might arise from
that method call. A big naked catch-all 'rescue' like that scares me --
if something unexpected happens, you'll get no notification of it, and
it will make the bug trickier to track down.

Much better to just deal with the specific situation -- in this case,
check for nil and then check for empty, which blank?() does for you.

Chris