地味にハマったのでメモ。
Rails でリソース ID にドットを含めたい場合、
routes.rb
resources :users, id: %r{[^/]+} do
...
end
と書くと、フォーマットも ID に含まれてしまう。
例えば、/users/bob.dylan.json
にアクセスすると、id: bob.dylan.json
, format: html
なんてことになる。
これを回避するには、以下のように書けば良かった。
routes.rb
resources :users, id: %r{[^/]+?}, format: /json|csv|xml|html/ do
...
end