During this week I was working on a Rails app when I ran into an issue where I needed to check if a variable has been defined in my view. The standard way to check if a variable is defined in Ruby is with the defined? operator.
However, I remember reading something in The Rails 3 Way about not being able to do this in partial views. Apparently there is an implementation restriction in the rendering system, and we need to use the local_assigns hash.
I tried to find out what exactly the restriction is, but the only reference I could find was in the Rails API (under Passing local variables to sub templates).
Testing using defined? headline will not work. This is an implementation restriction.
I guess it’s just one of those things we need to remember. Happy coding.