1

Rails 3.2には基本的なアプリがあります-2つのメインコントローラー:ユーザー記事。基本的なルーティングは、web.com / users/johnやweb.com/articles/articles-nameのようものです

一致ルールを使用すると、上記のURLを短くすることができます。

match "u/:permalink" => "users#my_action_name"
match "a/:permalink" => "articles#my_action_name"

web.com/u/johnweb.com/a/articles-nameを許可してください

しかし、最善の方法として、URLをさらに短く、読みやすくしたいと思います(この方法では、たとえばTwitter --twitter.com/usernameを使用しますweb.com/johnおよびweb.com/articles-name

しかし、このルーティング方法をどのように実現するかは想像できません。アプリでは、別のコントローラーも使用されます。たとえば、アクションインデックスを持つHomeControlleraboutcontactなどです。

4

2 に答える 2

1

公式 Rails ガイドの「 Route Globbing 」セクションを見てください。次のようなものを追加する必要があります

match '*users_or_articles' => 'agnostic#show'

config/routes.rbファイルの最後に。これにより、これまでにルート ファイルでマッチャーが見つからなかったすべてのリクエストがキャッチされます。次に、コントローラーはリクエストをどう処理するかを特定する必要があります。

于 2012-06-01T11:29:22.230 に答える
1

少し前に同じことを考えていて、Routing Guideで答えを見つけました。

あなたの質問は、次の 2 つのステップで回答できます。

1) 最初のステップはto_param、モデルのメソッドをオーバーライドして、よりきれいな URL を作成することです。例として、この質問を見てください。また、FriendlyId のような gem を使用することもできます (このスクリーンキャストを見てください)。

2) 次に、ファイルで:pathオプションを使用する必要がありroutes.rbます。たとえば、「example.com/3214-a-blog-post」のような URL が必要な場合は、次のようにリソースを宣言する必要があります。

resources :posts, :path => "/"
于 2012-06-01T11:27:18.770 に答える