地味にハマったのでメモ。
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