2010-04-12 7 views
0

Je travaille sur une application d'enregistrement de jardin de base qui comprend des jardins, des plantes et des plantes plantées. Chaque utilisateur a un ou plusieurs jardins, les plantes sont des définitions maîtresses, et une plante plantée peut être considérée comme une instance d'une plante dans le jardin d'un utilisateur spécifique.Création d'une nouvelle ressource imbriquée

Dans mon fichier routes.rb je donne les résultats suivants:

map.resources :gardens do |gardens| 
    gardens.resources :planted_plants, :has_many => :plant_log_entries, :collection => { :filter => :post, :choose_garden => :post} 
    gardens.resources :garden_log_entries 
end 

map.resources :plants 

Cela me semble logique lors de la récupération d'une liste de planted_plants dans le jardin d'un utilisateur, mais je voudrais créer un enregistrement planted_plant de la indice de plante. Le problème est, un utilisateur peut avoir plusieurs jardins. Comment puis-je créer un nouveau formulaire pour un plant_plant qui permet à l'utilisateur de spécifier quel jardin doit être utilisé?

La route actuelle nécessite un id_jardin - ce qui est logique pour la récupération, mais je voudrais fournir cela comme paramètre pour la création.

Merci d'avance pour toute aide!

Répondre

0

J'ajouterez un autre itinéraire (non imbriqués), pour permettre l'accès à l'action PlantedPlantsController#create sans préciser le garden_id dans l'URL:

map.resources :planted_plants, :only => :create 

Cela vous permettra de poster votre formulaire/planted_plants. Quant au formulaire lui-même, vous aurez probablement besoin de quelque chose comme ceci:

<% form_for @planted_plant do |p| %> 
    <%=p.label "garden_id", "Garden" %> 
    <%=p.collection_select :garden_id, current_user.gardens, :id, :name %> 
    ... other fields ... 
<% end %> 
+0

C'est exactement ce que j'ai fini par faire - fonctionne parfaitement! Merci! –

Questions connexes