5

これを書く簡単な方法はありますか:

  map.old_site_cusom_packages '/customs_packages_options.html', :controller => :public, :action => :redirect_to_home
  map.old_corporate '/corporate.html', :controller => :public, :action => :redirect_to_home
  map.old_track '/track.html', :controller => :public, :action => :redirect_to_home
  map.old_links '/links.html', :controller => :public, :action => :redirect_to_home
  map.old_contact '/contact.html', :controller => :public, :action => :redirect_to_home

多くの名前付きルートを 1 つのコントローラーの 1 つのアクションに送信したいのですが、古いサイトから残った URL が正しいページにリダイレクトされるようにしています。

乾杯。

4

2 に答える 2

2

詳細を取得するために、いつでも正規表現を使用して多目的ルートを作成できます。

old_content_names_regexp = Regexp.new(%w[
  customs_packages_options
  corporate
  track
  links
  contact
].join('|'))

map.old_content '/:page_name.html',
  :controller => :public,
  :action => :redirect_to_home,
  :requirements => {
    :page_name => old_content_names_regexp
  }

これにより、特定のページがキャプチャされ、それに応じてリダイレクトされます。より堅牢なソリューションは、コンテンツまたは 404 タイプのページを提供する前にチェックされる、データベースにある種のルックアップ テーブルを用意することです。

編集:名前付きルートの場合、簡単に変更できます:

%w[
  customs_packages_options
  corporate
  track
  links
  contact
].each do |old_path|
  map.send(:"old_#{old_path}",
    "/#{old_path}.html",
    :controller => :public,
    :action => :redirect_to_home,
  )
end

ほとんどの場合、最初にリストされた単一のレガシー ルートを使用して、古いルートを書き換えることができます。また、ルーティング テーブルをできる限り整理しておくことをお勧めします。2 番目の方法は、古いルートを橋渡ししようとする松葉杖のようなものです。

于 2010-02-17T15:28:22.283 に答える