2010-01-26 4 views
7

J'ai suivi Ryan Bates tutorial sur des modèles imbriqués. Plusieurs de mes modèles imbriqués sont associés à des dates. Dans mes migrations, ils sont en fait le type "Date".Modèles imbriqués, formulaires et date_select Intégration de FormHelper

Certaines choses que j'ai essayé et problèmes que j'ai rencontré

  1. date_select - peut gérer le préfixe d'objet forme, mais pas les modèles imbriqués les attributs
  2. select_year - ne fonctionne pas avec la forme objet
  3. un régulier sélectionnez rempli avec l'année en utilisant (Time.now.year - 100) .. (Time.now.an) et en remplaçant l'accesseur access_date et end_date pour prendre la valeur dans le select pour former un date et en passant cela. fonctionne sur créer uniquement, pas sur mise à jour
  4. en modifiant le type de données du champ en chaîne et en utilisant une sélection régulière remplie avec l'année en utilisant (Time.now.year - 100) .. (Time.now. an) travaux, mais modifier, il ne sera pas repeupler la sélection avec les informations actuelles

des idées ou des conseils seraient utiles.

Edit: before_save semble être plus prometteuse, mais pour une raison quelconque, la valeur est nulle entrée en avant d'enregistrer, mais est visible dans le log dump.

Edit 2: Fait intéressant, cela ne semble être un problème sur 'update', pas sur 'create'.

Répondre

2

J'espère sérieusement que cela fonctionne pour date_select ainsi:

http://jeffperrin.com/2009/06/04/rails-nested-forms-and-collection_select/

+0

Malheureusement, ce n'est pas le cas. Vous devez appliquer un peu d'un hack pour le faire fonctionner. <% date_select ('attorney [memberships_attributes] [NEW_RECORD]', "enddate",: début_année => 2015,: end_year => 1900,: order => [: mois,: jour,: année],: prompt => { : jour => 'Jour',: mois => 'Mois',: année => 'Année'})%>. L''avocat [memberships_attributes] [NEW_RECORD]' est préfixé sur select et utilise ensuite l'attribut correct. Cela ne fonctionne que si vous pouvez remplacer 'NEW_RECORD' au moment de la création du modèle imbriqué, ce qui n'est pas possible. – davidstites

0

Peut-être que cela fonctionnerait avec la gemme formtastic ...

Questions connexes