1. ホーム
  2. ruby-on-rails

[解決済み] パラメータにドットを含むルートはなぜマッチングに失敗するのでしょうか?

2023-07-01 13:20:55

質問

私は、ユーザー用に以下のようなルートを用意しました。 /iGEL/contributions のような、ユーザー用のルートを用意しました。これはうまく動作します。しかし、あるユーザーが 'A.and.B.' のような名前で登録したところ、名前にドットが含まれているため、ルートのマッチングに失敗しています。

私のルートです。

get "/:user/contributions" => 'users#contributions'

何かアイデアはありますか?

どのように解決するのですか?

青い情報ボックスを見る ここで :

<ブロッククオート

デフォルトでは、ダイナミックセグメントはドットを受け付けません。 これは、ドットが をセパレータとして使用するためです。 ルートの区切り文字として使用されるためです。ドットを使用する必要がある場合は、ダイナミックセグメント内で を使用する必要がある場合は、ダイナミックセグメントに 制約を追加してください。 例えば :id => /[^\/]+/ は はスラッシュ以外なら何でも許可します。

例えばこうなります。

get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ }