我正在用一种干净的方法来解决这个问题。
假设我有类似这些模型的东西:
class Article
end
class FooArticle < Article
end
class BarArticle < Article
end
现在,我没有一组特殊的 FooArticle 和 BarArticle 路由,它们都/articles
在我的应用程序中得到处理。
所以我通常会做 article_path(@article) 或 new_article_path 等。
除了我不想明确定义路线的共享部分情况外,这一切都很好:
form_for(@article) do |f|
...
end
上面会导致一个未知的路由错误,因为它无法解析foo_article_path
,或者bar_article_path
- 但是它可以使用新记录,因为我通过@article = Article.new
.
所以现在的问题是:是否有一种方法可以切换路径参数,所以我不必编写这段代码:
url = @article.persisted? ? article_path(@article) : articles_path
我明确不想使用路由器的多态魔法,但仍然可以从那里进行的动作自动检测中受益。