2009-03-03 3 views
12

J'utilise Single Table Inheritance et j'ai des commentaires sur toutes les sous-classes. J'utilise seulement un contrôleur pour tous les différents types d'IST. Lorsque l'assistant form_for génère une URL pour un sous-type, il essaie d'utiliser un assistant pour le sous-type, mais je souhaite qu'il utilise l'assistant pour le parent.Puis-je faire des ITS et toujours utiliser des aides de chemin polymorphes?

C'est l'erreur que je reçois:

undefined method `subclasstypename_comments_path' for #<ActionView::Base:0x41ef27c> 

L'assistant de chemin, il 'devrait' l'utilisation est

parentclasstypename_comments_path 

Répondre

57

Eh oui, il suffit d'utiliser AR::Base#becomes.

Dites que votre classe de base est Account, qui est sous-classée à GuestAccount et LoginAccount.

@account.is_a? LoginAccount? #=> true 

Ensuite, vous pouvez juste faire une

form_for [@account.becomes(Account), @comment] do |f| 
    ... 
+0

la forme rend correctement avec le chemin correct, mais rien est enregistré lorsque je soumets le formulaire – lulalala

+0

Parfait, merci. – recurser

+1

Je m'incline devant ta grandeur! – paulus

Questions connexes