Ruby
Rails

Rails でリソース ID にドットを含めつつフォーマットを指定する

More than 3 years have passed since last update.

地味にハマったのでメモ。

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