2009-09-07 8 views

Répondre

5

L'aide date_select utilise ce que les appels Rails attributs de paramètres multiples. C'est-à-dire que la valeur de l'attribut release_date est répartie entre les trois listes déroulantes du jour, du mois et de l'année créées par l'assistant date_select. date_select noms les 3 listes déroulantes suite à une convention telle que, dans votre contrôleur, vous pouvez faire:

@game = Game.new(params[:game]) 

et l'attribut release_date sur le nouveau jeu seront renseignés avec la date sélectionnée.

ou

@game.update_attributes(params[:game]) 

pour mettre à jour un enregistrement existant.

Si vous inspectez params ou regardez dans le fichier journal, vous verrez les 3 composants:

params["game"]["release_date(1i)"] # the year 
params["game"]["release_date(2i)"] # the month 
params["game"]["release_date(3i)"] # the day 

Alors que vous pouvez accéder à ces éléments individuels directement, il ne semble pas être une bonne idée. L'assistant date_select est vraiment conçu pour être utilisé avec le setter attributes= d'ActiveRecord utilisé lors de la création d'un nouvel objet ou de la mise à jour d'attributs.

+0

le modèle de jeu possède un champ date() appelé "release_date". Serait-il correct de faire Game.create (: name => name,: release_date => params [: release_date])? – dotty

+0

Si le formulaire a été créé en utilisant les helpers standard, alors le nom, release_date etc sera imbriqué à l'intérieur comme params [: game] [: name] etc. Il n'y a pas une seule entrée pour params [: game] [: release_date] . Vous pouvez cependant faire Game.create (params [: game]). créer est identique à l'utilisation de .new suivie d'une sauvegarde. – mikej

Questions connexes