質問: ### 質問内容 Ruby on Railsを現在利用しています。 前々から疑問に思っており、問題はないのですが、ずっとモヤモヤしていますので質問させてください。 Railsにはpathというものがありますよね。 URLを指定するものだと思うのですが、よくわからない挙動をしています。 例えば http://localhost:3000/project/new というURLをリクエストします、そうするともちろん存在していますのでしっかりとnewのページが呼び出されます。 問題はこちらで http://localhost:3000/project/news というURLをリクエストします(よく間違えて打ってしまう)、存在していないので通常はRouting Errorが出るものだと思うのですが なぜか関係のないshowページを返してきます。 しかもURLはhttp://localhost:3000/project/newsのまま変わりません。 どなたかご存知であれば教えてください。 ### 利用しているバージョン Rails version: 5.2.3 Ruby version: 2.6.2
回答: > > http://localhost:3000/project/news > > というURLをリクエストします(よく間違えて打ってしまう)、存在していないので通常はRouting Errorが出るものだと思うのですが > > なぜか関係のないshowページを返してきます。 > > > `get 'project/:id', 'project#show'`のようなルーティングがあった場合、`:id`に入るのは**整数に限られません**。`/project/news`でも、id=newsとしてこのルーティングにマッチします。