Nil object when an array was expected

Hi there, it’s kind of a weird problem. I have a Person model and
Person controller. In the new method in my controller I try to retrieve
a collection of nationalities. The nationalities are stored in a
different table. So retrieving those should be like:

def new
@person = =
@person.birthday =
@person.nationality =
nationalities = Nationality.find( :all )

Unfortunately when Rails try to access the array in the new.rhtml it’s
nil. Here, I create a selection list, as follows:

<% form_for :gender do |form| %> <%= :gender, @genders ) %> <% end %>

The weird thing happens when I retrieve the array inside new.rhtml.
It’s working here.

<% form_for :nationality do |form| %> <%= @nationalities = Nationality.find( :all ) :nationality, @nationalities ) %> <% end %>

As stated in the new Web D. book those code should normally
reside in the controller.

Am I missing something?

Thanks ahead,

Try using an instance variable (@nationalities) in the controller
instead of a local variable (nationalities). Instance variables are
available in the views, but local variables created in the controller
method are not.


On Tue, 23 Jan 2007 17:29:04 -0000
“chhenning” [email protected] wrote:

@person.nationality =

Jason S. | Tel: 616-532-2300
Systems Administrator/ | Fax: 616-532-3461
Programmer | Email: [email protected]
Right to Life of Michigan | Web:

Thanks Jason, I’m coming from C++ and though I’m probably more used to
C++ way of compiler errors. If an variables is not accessible in the
current scope why not just state that. But I guess Ruby is on a lot of
ways different to C++.

Anyway thanks, that was the solution.


This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs