2

J'utilise STI dans Rails, et j'ai un objet Vehicle, qui a beaucoup de différents types de sous-classes, comme Car, Truck, etc. application, donc STI fonctionne bien dans ce cas, mais j'ai de la difficulté à créer un formulaire unique où n'importe quel type d'enregistrement de véhicule peut être créé.Création d'un seul formulaire de création à l'aide de l'héritage de table unique dans les rails

Utilisation du routage suivant:

resources :vehicles 
resources :cars, :controller => 'vehicles' 
resources :trucks, :controller => 'vehicles' 

je peux avoir/voitures et/camions routing mis en place, et les deux pointant vers la même forme. Cependant, comme le formulaire pointe vers le contrôleur de véhicules et génère un objet Véhicule pour le formulaire, il n'a aucun moyen de savoir que l'URL/cars doit créer un objet Car. J'essaie d'obtenir un système de routage configuré où/cars pointe vers un formulaire qui serait intrinsèquement connu pour faire un objet pour le formulaire en utilisant Car.new ou même Report.new (: type => " Voiture"). J'ai pensé à travailler sur un système de routage comme/vehicles /: subclass, et en utilisant params [: subclass] dans le contrôleur, mais je n'arrive pas à comprendre comment faire ce genre de routage et éviter les autres erreurs de routage causées par Rails La magie des STI.

Je pourrais toujours analyser l'URL pour obtenir la valeur, mais cela semble être une façon dangereuse et hacky de s'y prendre.

Je suis curieux de savoir si quelqu'un a des conseils ou de l'expérience sur la façon Rails de le faire. Merci!

Répondre

0

Puisque vous voulez utiliser le même formulaire pour tous les véhicules, alors je suppose que tous les champs sont identiques à l'exception du type d'objet. Alors pourquoi ne pas avoir une liste déroulante dans le formulaire pour permettre à l'utilisateur de sélectionner quel type d'objet l'utilisateur veut créer?

Vous pouvez ensuite gérer l'objet approprié persistant dans l'action de création dans le contrôleur.