2009-12-17 6 views
1

J'essaye d'identifier un numéro d'identification d'utilisateur, pour attraper une rangée d'étudiant d'une table d'ActiveRecord, mais pour quelque raison le bloc de «poteau» ne trouvera pas mon: id.scope dans Ruby/Sinatra

Pour le 'get', l'URL est localhost: 9456/update/17. C'est ici que je dois passer au bloc 'post' pour mettre à jour la base de données.

Je ne suis pas sûr de savoir comment faire. Analyser l'URL? Il semble que je manque quelque chose d'évident.

# update user page 
get '/update/:id' do 
    @student = Student.find(params[:id]) #this returns ID=17 
    erb :update 
end 

#update user submit 
post '/update' do 
    @student = Student.find(params[:id]) #this line doesn't work 
    @student.name = (params[:name]) 
    @student.email = (params[:email]) 
    @student.save 
    redirect '/' 
end 

merci!

+0

Envoyez-vous la valeur a pour un param: id? comme un nom de champ masqué = "id", car votre route de publication/mise à jour n'a pas: id ajouté à l'itinéraire. – nowk

+0

c'est fait ... merci! – gleddy

Répondre

5

Êtes-vous en train de transmettre le id? Soumettez-vous un formulaire via POST? Si c'est le cas, tout ce que vous devez faire est d'ajouter une entrée dont l'attribut name est id.

<form action='/student/update' method='post'> 
    <input type='hidden' name='id' value='17' /> 
</form> 
+0

merci pour cela. fonctionne bien maintenant. n'a même pas pensé au champ caché – gleddy