Bonjour tous le monde ,
j'ai un petit problème voici une explication de ce que j'ai fais :
j'ai crée un scaffold :
./script/generate scaffold Zone name:string interface:string
description:string
ca fonctionne bien .
puis j'ai changé <%= f.text_field :interface %> en
<%= f.select :interface , @table_Interfaces %>
@table_interfaces est un tableau qui contient les noms des interface
reseaux detecté sur la machine linux .
dans le controlleur j'ai :
@interfaces=%x[ifconfig|grep Link|cut -d " " -f 1]
@table_Interfaces=@interfaces.split(" ")
and ca fonctionne parfaitement aussi et je peux faire toute les
opération sur mon model .
puis je voulais faire des validation sur mon model
j'ai ajouté ceci dans le fichier Zone.rb :
class Zone < ActiveRecord::Base
validates_presence_of :name
end
maintenant quand je veux crée une nouvelle zone
si j'entre tous les champ ca marche bien et je peux enregistrer
mais si je n'entre pas le nom j'ai cette erreur : (normalement j'ai
juste un message dans ma vue indiquant que le champ nom doit être
rempli)
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 %>
ce qui veux dire que le model n'a pas connu l'objet @table_Interfaces
qui est déclaré seulement dans le controlleur n'est ce pas ?
est ce que je doit ajouter une autre chose dans le fichier model Zone.rb
?
merci infiniment pour votre aide .
on 2011-01-22 13:00
on 2011-01-24 18:57
À vue de nez ton objet n'est pas valide pour une autre raison, et donc
la view new.html.erb est rendue.
Sauf que new.html.erb a besoin de @table_interface qui n'est pas défini
dans #create, d'où le plantage.
De toute façon:
@interfaces=%x[ifconfig|grep Link|cut -d " " -f 1]
@table_Interfaces=@interfaces.split(" ")
n'a rien à faire dans le controlleur. Ça devrait aller dans ton model
Zone.
Si tu postes un peu plus de code ça sera plus facile de t'aider.
--
http://digiprof.tv
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.