2

RoR ベースのサイトに追加するために、php で書かれた多数のランディング ページを変換しています (これは 2 年以上稼働しています)。これらのランディング ページはいくつかのバージョンに分かれていますが、残念ながら URL 名に関しては一貫性がありません。私の問題は、変換しようとしている php ページのページ ランクがすでに高いため、それらの URL をそのまま維持したいということです。

example.com/* が常にホームページにアクセスするように routes.rb を設定する方法がわかりません。ただし、 when (* == 'name-of-one-of-the-landing-pages') Rails は別のコントローラーにルーティングされ、特定のアクションがイニシャライザーと params ハッシュに基づいてレンダリングするページを決定します、前述のように、URL は php から RoR への変換前と同じです。つまり、www.example.com/*controller_name*/name_of_landing_page ではなく、www.example.com/name_of_landing_page です。

空の文字列 (つまり ) が渡された場合にパスからコントローラー名を除外できるようにする :path プロパティを知っていますがresources :examples, :path => ''、それで問題全体が完全に解決されるわけではありません。

関連するすべてのランディング ページのハッシュを保持するイニシャライザを作成し、routes.rb で制約を使用してチェックすることを考えていましたが、この種の実装が可能かどうか、およびその方法についてはわかりません。コード例をいただければ幸いです。

そうすることを可能にするroutes.rbのある種の構文、またはおそらくより良い解決策はありますか?

4

2 に答える 2

0

なぜ複雑なことが関係しているのかわかりません。そのような設定は、ルート上で非常に簡単なはずです。

「PagesController」という名前の静的ページを処理するコントローラーがあるとします。

get 'name-of-one-of-the-landing-pages-a', to: 'pages#a'
get 'name-of-one-of-the-landing-pages-b', to: 'pages#b'

パスにコントローラー名を追加する必要はありません。それらすべてを制御できます。

于 2013-08-27T15:00:31.537 に答える