カテゴリー:
Rails
タグ:
 ルーティング routes

このエントリーをはてなブックマークに追加
更新日時:
2012年11月26日(月)
作成日時:
2012年11月26日(月)

前の記事 / 次の記事

タイトルだけだと一体何を実現しようとしてるのか分かりにくいかも知れないけど、例えば

resources :books

とかしてつくったルーティングで、

http://localhost:3000/RaislBook

みたいにタイトル等の文字列をidとして使いたい場合に、

http://localhost:3000/Node.jsBook

のようにタイトルの文字列としてピリオドを含んでいるものがあると、

:id => Node
:format => jsBook

と認識されてそんなformatねーからって言われて終わる。
のでこれをなんとかしたい。

Railsのバージョンは3.2.9

【参考ページ】
Rails 3.1 で URL にピリオドを使いたい
Rails Routing from the Outside In

で、正解は

resources :books, :id => /[^\/]+/ 

要はidにピリオドも含まれるっていうことを明示することで、
結果としてformatとして認識される文字列が無くなってめでたしめでたしってことらしい。

だからidとして使う予定の文字列に数字が含まれないなら

resources :books, :id => /[^\d]+/ 

でもピリオドを使ったidでアクセス出来るようになる。
また、参考ページではスラッシュを含んだ文字列をidとしては使えないと書いてあるが、例えば

resources :books, :id => /[^\s]+/ 

等とすることでスラッシュを含んだ文字列もidとして使えるようになる。