TTIL

2022-01-14 406 Not Acceptable / Railsルーティングでidとして数値のみを受け付ける

406 Not Acceptable - HTTP | MDN

HyperText Transfer Protocol (HTTP) の 406 Not Acceptable クライアントエラーレスポンスコードは、サーバーがリクエストの用意したコンテンツネゴシエーションヘッダーで定義された受付可能な値に一致するレスポンスを生成できず、サーバーが既定の表現方法で提供することを望まないことを表します。

用意されるコンテンツネゴシエーションヘッダーには次のものがあります。

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language

Railsルーティングでidとして数値のみを受け付ける

何も指定しないとRailsルーティングで受け付けるパラメータは int 型であろうと sting 型であろうと何でも受け入れてしまう。

例えばこれをRailsのDBのid(つまりint型)だけに制限したければ数値だけ受け付けるようにルーティングに変更を加えてやればよい。

constraints id: /\d+/ do
  get ':id', ...
end 

参考. Railsのルーティングを理解する | デバッグライフ