2009-12-24 5 views
1

J'ai un écran d'édition pour un modèle imbriqué dans 2 autres ressources. Pour rendre l'exemple facile à comprendre, il semble un peu comme ceci:Rails - listes déroulantes de formulaire pour les ressources imbriquées. Quelle est la bonne façon?

Marque -> Modèle -> Car

J'ai un écran d'édition de voiture qui vous permet de modifier les quelques champs qu'il contient. (en supposant l'URL est:/fait/124/modèles/12512/voitures/1125/modifier) ​​

Je veux ajouter une paire en cascade de menus déroulants pour permettre à l'utilisateur de réassigner une voiture à un autre Marque/Modèle. (Je fais ceci pour nettoyer certaines des mauvaises données qui sont dans le système).

La forme ressemble à ceci:

<% form_for [@car.model.make, @car.model, @car] do |f| %> 

    <%= f.error_messages %> 

     <!-- this is where I want the cascading dropdowns --> 

    <p> <%= f.label :color %><br /> 
     <%= f.text_field :color %></p> 

    <p> <%= f.label :mileage %><br /> 
     <%= f.text_field :mileage %></p> 

    <p><%= f.submit "Update Car" %></p> 
<% end %> 

Je peux ajouter @makes à ce point de vue de mon contrôleur, et je sais comment rendre la boîte de sélection, mais ce que je ne comprends pas comment je peux avoir la valeur automatiquement sélectionnée lors du chargement du formulaire.

Quelle est la bonne façon de construire un tel formulaire, avec des champs pour certaines des ressources parentes?

Répondre

0

Vous devez utiliser :shallow => true comme décrit here afin que votre URI modifier est http://host:port/cars/1125/edit

+0

En fait, je les routes respectueuses de la recherche, de sorte que l'URL complète a un sens, mais je suis d'accord avec vous si j'étais juste en utilisant le id pour chacun. (Quelque chose comme/makes/52-honda/12-accord/.....) - L'autre raison est que l'URL est "hackable" ce qui signifie que vous pouvez supprimer un segment et cela fonctionne toujours. –

Questions connexes