validates_presence_of problem

hello every body !

i have a little problem

i have created a scaffold Zone witch contain : name , interface and description as attribute

all works fine but when i add this line to my model :

class Zone < ActiveRecord::Base

validates_presence_of :name, :message => "Missing name "

end

i have an error when the name is empty !

this is the error :

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.inject

any help please i have searched a lot but i don't found any solution :( have i forgot any step ?

thanks a lot

hello every body !

i have a little problem

i have created a scaffold Zone witch contain : name , interface and description as attribute

all works fine but when i add this line to my model :

class Zone < ActiveRecord::Base

validates_presence_of :name, :message => "Missing name "

end

i have an error when the name is empty !

this is the error :

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.inject

Hi! Can you post more data on the error — it probably tells you a line number and class where this is occurring. I suspect that the issue might be in your view code?? At least I have had such… anyhow more info should help.

hello every body !

i have a little problem

i have created a scaffold Zone witch contain : name , interface and description as attribute

all works fine but when i add this line to my model :

class Zone < ActiveRecord::Base

validates_presence_of :name, :message => "Missing name "

end

i have an error when the name is empty !

this is the error :

You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.inject

Look carefully at the error and if necessary the stack trace and you should find an indication of where it is failing in your code. Look at that line and you will likely find a call of inject, the error is telling you that the object you are calling inject on is nil.

Colin

hello thank you for your reply

i will explain to you a little more the problem :

i created a scafold :

./script/generate scaffold Zone name:string interface:string description:string

all works fine .

than i changed <%= f.text_field :interface %> to <%= f.select :interface , @table_Interfaces %>

@table_interfaces is an array witch contains all network interface in the linux machine .

in my controller i have :

@interfaces=%x[ifconfig|grep Link|cut -d " " -f 1] @table_Interfaces=@interfaces.split(" ")

and at this step all works fine . i can make all the operation on my object Zone.

then i wanted to make some validation in the model .

i aded this in my model file Zone.rb :

class Zone < ActiveRecord::Base validates_presence_of :name end

Now when i want to create a new zone :

if i enter all the attribute it works fine .

if i don't enter the name i have this error :

Showing app/views/zones/new.html.erb where line #12 raised:

You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.inject

Extracted source (around line #12): <%= f.select :interface , @table_Interfaces %>

witch mean that the model don't know the object @table_Interfaces witch is declared only on the controller no ?

should I add something in my model file related to @table_Interfaces ?

thank you very much for your help . i am a newbie in ROR world but i have searched a lot without result .

hello thank you for your reply

Please don't top post, it makes it difficult to follow the thread. Insert your reply at appropriate points in previous message. Thanks

i will explain to you a little more the problem :

i created a scafold :

./script/generate scaffold Zone name:string interface:string description:string

all works fine .

than i changed <%= f.text_field :interface %> to <%= f.select :interface , @table_Interfaces %>

@table_interfaces is an array witch contains all network interface in the linux machine .

in my controller i have :

@interfaces=%x[ifconfig|grep Link|cut -d " " -f 1] @table_Interfaces=@interfaces.split(" ")

I suggest you use ruby-debug to break in here and inspect the variables to see what is going on. Have a look at the Rails Guide on debugging to find out how.

Also have you tried running the code above in the ruby console to see what it generates?

A secondary issue, but the rails convention for naming is @table_interfaces (all lower case). If you stick to the rails conventions your life will generally be simpler.

Colin