From: Stefano Crocco Date: 2008-08-13T01:24:18+09:00 Subject: Re: What's the easiest way to check if param[:x][:y] exists? On Tuesday 12 August 2008, Joshua Muheim wrote: > Hi all > > In PHP I can simply check whether $param['x']['y'] exists regardless > whether $param['x'] exists or not. > In Rails I get a NoMethodError when using > > if param[:x][:y] > .. > end > > when param[:x] is nil. So I always have to use > > if param[:x] and param[:x][:y] > .. > end > > but I think that's not very beautiful - think about a case where I have > to check whether param[:a][:b][:c][:d][:...] exists or not! > > Maybe there's a cooler way to do this? ;-) > > Thanks > Josh You can use the rescue modifier, like this: if (param[:x][:y] rescue nil) ... end The expression in brackets will return the value of param[:x][:y] but if param[:x][:y] raises an exception derived from StandardError (like NoMethodError), the exception will be caught by the rescue modifier, and the statement to the right of rescue (nil) will be returned. I hope this helps Stefano