ルートファイルを編集して、アンダースコア文字「_」を含むユーザー名のルーティングを許可するにはどうすればよいか疑問に思っています。関連するコードは次のとおりです。
controller :users do
match ':id' => :show, :via => :get, :constraints => { :id => /[A-Za-z0-9\-\+]+/ }
end
ルートファイルを編集して、アンダースコア文字「_」を含むユーザー名のルーティングを許可するにはどうすればよいか疑問に思っています。関連するコードは次のとおりです。
controller :users do
match ':id' => :show, :via => :get, :constraints => { :id => /[A-Za-z0-9\-\+]+/ }
end
構造A-Za-z0-9\_
は と同じ\w
です。したがって、短いバージョンを使用できます。
/[\w\-\+]+/
正規表現を更新して、次のように追加_
します。
/[A-Za-z0-9\-\_\+]+/
完成したものは次のmatch
ようになります。
match ':id' => :show, :via => :get, :constraints => { :id => /[A-Za-z0-9\-\_\+]+/ }
この正規表現パターンは、このテスト文字列を無視していないと思います:
XXXX XXXXX
文字列の間にスペースがあります。この正規表現パターンを更新すると、このテスト文字列は無視されます。
controller :users do
match ':id' => :show, :via => :get, :constraints => { :id => /^[\w\-\+]+$/ }
end