- 更新日: 2014年9月29日
- Rails
Railsでドットを含むURLのルーティングを実現する Segment Constraints
スポンサーリンク
Rails のルーティングのデフォルトの挙動では .(ドット/ピリオド)はフォーマット(html/json/xml/csv など)との区切り記号として使われるため、URL の動的セグメントの部分にドットを含めることはできません。
— 環境 —
rails 4.1
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
URL にドットが含まれるとエラー
例えば、以下のようなルーティングを設定した場合、:postname の部分にはドットを含めることができない。
1 |
get '/posts/:postname', to: 'posts#show' |
ルーティングの動的セグメント部分に .(ドット)が含まれる URL の場合、私の環境では 404 error になったり、違うページにリダイレクトされたりなどのエラーが発生しました。
Segment Constraints 機能で解決
これに対処するために、ルーティングで Segment Constraints という機能を利用しました。
3.8 Segment Constraints | Rails Routing from the Outside In — Ruby on Rails Guides
:postname に許可する文字列を正規表現で指定します。
1 |
get '/posts/:postname', to: 'posts#show', postname: /[^\/]+/ |
今回の場合は、/(スラッシュ)以外の文字列を許可。これで、ドットも :postname の動的セグメント部分に、含むことができるようになる。私の環境でもエラーが解消されました。
- – 参考リンク –
- Rails Routing from the Outside In — Ruby on Rails Guides
- ruby – How to handle dot character in Rails resources routes? – Stack Overflow
- RailsでURLにドットを含むルーティングを可能にする。|WEBデザイン Tips
- Railsのルーティングでidにピリオドやスラッシュを含んだ文字列を使う [俺の備忘録]
- Ruby – Rails でリソース ID にドットを含めつつフォーマットを指定する – Qiita
スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
>> 次の記事 : Railsのfragment cacheでビューの一部をキャッシュ
<< 前の記事 : Railsで同一URLで多言語化していたページを言語毎にURLを分ける
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Rails監視ツール用にErrbitをHerokuで運用
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
Leave Your Message!