shoota / rails-tutorial

おじさんが本気でゼロからRuby on Rails 勉強してる
http://railstutorial.jp/
14 stars 0 forks source link

anonymousなURL #9

Open shoota opened 10 years ago

shoota commented 10 years ago

githubもそうだけど、動的なURLってできるのかなー、っていう覚書。 github.com/[user_name]/[repo_name]みたいな、ドメイン以外にpathが不定のルーティング。

サッと調べた限りだと、見つからなかった。

ppworks commented 10 years ago

たとえば、 pplogだと /u/ppworks とかがそれに当たるかなーと思います。

github.com/[user_name]/[repo_name] を例に上げると

user has many repositoriesな関係でリソースも同じように railsの標準なrouteを定義すると

resources :users, only: nil do
  resources :repositories, only: [:show]
  # get 'users/:user_id/repositories/:id' => 'repositories#show', as: user_repository とほぼ同義
end

みたいになるかなーと。この場合作られるルーティングは /users/:user_id/repositories/:id ッて感じになるので、欲しいのと違っちゃいますよねえ。

なので、ちょっと細工してあげて

get '/:user_name/:repository_name' => 'repositories#show', constraints: {user_name: /\w+/, repositoy_name: /\w+/}

とかすると github.com/[user_name]/[repo_name] を実現することはできますね!

shoota commented 10 years ago

ふむふむ。リソース定義に対してアクションを指定してあげるのですね。実際に動かしてみたほうが理解できそう。


routes.rbで正規表現とか使えるのかな?

.rbなんだから普通に使える。疑問点が完全にアホ。