Forum: Rails France validates_presence_of problem ROR

Ba834de626e0ba35f235e11977c110c3?d=identicon&s=25 Abdelkarim Fitouri (prodit96)
on 2011-01-22 13:00
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 .
059ed46172a087063ce26250e44c8627?d=identicon&s=25 Fernando Perez (fernando)
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
This topic is locked and can not be replied to.