質問: Rails初心者です。 地域のポータルサイトを作成したいのですが、URL設計のルーティングで悩んでいます。 例としてエキテンというサイトを参考にしているのですが、 歯科・歯医者リストのカテゴリから地域別に都道府県・市区町村と絞り込みしていく形を実現したいです。 トップ > 歯科・歯医者 > 東京都の歯科 > 新宿区の歯科 上記のようなURLとするには、どのようにroots.rbにどのようなルーティング設定を記載すれば良いでしょうか。 現在、以下のコントローラーとモデルは作成済みです。 ▼都道府県リスト prefectures_controller PrefectureModel ▼市区町村リスト citiees_controller CityModel ▼町域リスト towns_controller TownModel ※上記のリレーションは完了しています。 ▼全国の映画館リスト theaters_controller TheaterModel ※映画館リスト以外にも地域別の店舗情報などをカテゴリで分けたいと考えています。 美容院・居酒屋など ※映画館リストと都道府県・市区町村・町域リストは関連付けができていませんので、 whereなどで絞り込みをかけたいと思っています。 大変お手数ですが、ご教授いただけますと幸いです。
回答: 今後のリソースの種類が増える可能性を考えると自治体コード(JISX0402)を都道府県コードと市区町村コードで分け、その下にリソースの種類で分けるのが良いと思います。また下手に桁で分けると面倒になるので市区町村コードは5ケタのままで良いと思います。もし町丁目で分けたいならば計11桁のIDが必要になります。町丁目はJISコードでなく各自治体固有(最大11桁だったと思います)なのでお気をつけて。 ``` / 都道府県コード(2桁) / 市区町村コード(5桁) / 必要であれば町丁目コード ``` ルーティングは以下の様になるかと思います。 ``` root 'theater#index' get '/theater/:city(.format)' => 'theater#index' get '/theater/:city/:pref(.format)' => 'theater#index' get '/theater/:city/:pref/:town(.format)' => 'theater#index' ``` もちろん各モデルに市区町村コード(もしくは町丁目コード)が必要です。 ただしユーザが「映画館検索」を広域から検索するか、地元の店舗一覧から映画館を見つけるかはニーズ次第なので theater が前に来るか後ろに来るかは要件次第です。