これを解決するためのきれいな方法で少し苦労しています。
これらのモデルのようなものがあると仮定しましょう:
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
私は明示的にルーターのポリモーフィック マジックを使用したくありませんが、そこで行われているアクションの自動検出の恩恵を受けています。