我使用的是单表继承,并对所有子类都有注释。我只为所有不同的STI类型使用1个控制器。当form_for帮助程序为子类型生成URL时,它会尝试使用子类型的帮助程序,但我希望它使用父类的帮助程序。
这是我得到的错误:
undefined method `subclasstypename_comments_path' for #<ActionView::Base:0x41ef27c>
它应该使用的路径助手是
parentclasstypename_comments_path
答案 0 :(得分:57)
是的,只需使用AR::Base#becomes
。
假设您的基类为Account
,其子类为GuestAccount
和LoginAccount
。
@account.is_a? LoginAccount? #=> true
然后你可以做一个
form_for [@account.becomes(Account), @comment] do |f|
...