2011-07-07 3 views
3

私はAngelListが使用するのと同じルートを生成する方法を理解しようとしています。Railsでは、AngelListのような任意の文字列のルートを生成する方法はありますか?

  • angel.co/ <ユーザー名>
  • angel.co/ <タグ>
  • angle.co/:あなたはそのURLを見ている場合、あなたは彼らが次の形式であるがわかります<内部ページへのリンク>

これをRails 3でどうやってやりますか?ここで

答えて

2

は、私はこれを行うだろうかだ(最も効率的ではないかもしれないが、動作します)

のconfig/routes.rbをしてURLRouter

という名前のダミーコントローラを作成します

match ':object' => 'URLRouter#show' 

このあなたのURLRouterコントローラでSHOWアクションを呼び出し、リクエストしているものをparams [:object]に配置します。

if User.find_by_username(params[:object]) 
    render "users/show/#{params[:object]}" 
end 

繰り返し異なるモデルごとに、このif文:

はそのURLRouterコントローラでは、次のコードを配置します。最初のモデルは、3番目のモデルなどに優先する2番目のモデルよりも優先されます。

ユーザー名と同じ値のタグを作成できないようにする必要があります。内部リンクと同じ値に等しいユーザー名を作成するなどします。そうしないと、アクセスできないページが表示される可能性があります(URLは意図した以外のモデルにルーティングされる可能性があります)。

もう1つ重要なことは、この方法でルートを変更すると、残りの後にこのマッチステートメントを置くことです。