Rails Routing Redirectionガイドによると、一致したURLをroutesファイル内の別の名前付きURLにリダイレクトする簡単な方法はないようです。
リダイレクト関数で完全なURLパス()を指定せずに、routes.rbでこのようなリダイレクトまたは類似のリダイレクトができればいいのですが"/articles/%{id}"
。
match "articles/:id" => "articles#show", :as=>'article'
match "articles/view/:id", :to => redirect(article_path)
この機能を提供する可能性のあるプラグインまたはgemはありますか?
私の最終的な解決策には、受け入れられた回答に基づいて次のような関数を追加することが含まれていました。
# handles redirecting a matched URL to a named URL
# source_match = string to match against
# dest_name = symbol of the named URL
def redirect_to_url(source_match,dest_name)
param_symbols = source_match.scan(/:([a-z\-\_]+)/i).flatten.map{|i| i.to_sym}
match source_match, :to=>redirect{|params,request|
Rails.application.routes.url_helpers.send("#{dest_name}_path", params.slice(*param_symbols))
}
end