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.
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
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