Rails の Routing でパラメータを残してリダイレクトする

  • 6
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

/old?a=3/new?a=3 にするような場合です。

get '/old' => redirect('/new')

だと、/old?a=3/new になってしまいます。

これを解決するには、キーワード引数形式で redirect メソッドを呼びます。

get '/old' => redirect(path: '/new')

なお、レスポンスコードは、デフォルトで 301 になります。

サンプル

/tokyo/food?a=3 を /food?a=3 にするような場合です。

area_path = Regexp.union(Area.pluck(:name))
category_path = Regexp.union(Category.pluck(:name))

get(':area/:category' => redirect(path: '/%{category}'),
  area: area_path, category: category_path)