2009-04-09 9 views
3

J'utilise un assistant de rails qui crée 3 listes de sélection dans le but de permettre à un utilisateur de sélectionner une date. Si j'attribue un nom à l'assistant, il définit les 3 listes de sélection pour avoir ce nom, puis seul le dernier passe (il écrase le précédent). Ce que j'ai besoin de savoir est: Quelle est la meilleure façon de prendre une série de 3 listes de sélection (jour, mois, année), et les combiner pour créer un objet date et l'enregistrer dans ma base de données?Comment gérer les objets de date dans les formulaires ruby ​​on rails?

Voici mon champ Date:

<%= select_date Date.today, { :order => [:month, :day, :year], :start_year => Date.today.year, :end_year => Date.today.year + 3 } %> 

et voici les paramètres passés à mon contrôleur (a craché de mon journal de dev)

Parameters: {"date"=>{"month"=>"4", "day"=>"9", "year"=>"2009"}, 
"action"=>"create", "controller"=>"shows", 
"show"=>{"headline"=>"for example, \"Parking lot is next to the bookstore on Main Street\"", "venue_id"=>{"venue_id"=>""}, "cents"=>"00", "dollars"=>"00"}, 
"user_id"=>"3", "load_in"=>"-2", "show_time"=>"-2", "query"=>"Type venue name & location here...", "doors"=>"-2"} 

Comme vous pouvez le voir, la date est passée . Idéalement, je voudrais que la date transmise comme objet de date acceptable à mon contrôleur. En outre, je voudrais qu'il soit passé dans le hachage "show" car il s'agit de montrer les données. Est-ce possible avec quelques modifications de rails simples? Ou dois-je écrire quelques JS (... un peu sales pour cette solution à mon avis)?

Répondre

6

Je pense que vous voulez date_select au lieu de select_date, puisque vous le voulez associé à un champ particulier dans votre objet d'exposition.

date_select("show", "date", :default => Date.today, 
    :order => [:month, :day, :year], :start_year => Date.today.year, 
    :end_year => Date.today.year + 3)