1

Railsアプリでは、この現在の正規表現バリデーターをroutes.rbの下にあります

match 'profile/:username' => 'users#show', :as => :profile, :constraints => { :username => /[ a-zA-Z0-9\-\_ ]+/ }

この制約は Rails2 では機能しますが、Rails3 では機能せず、ルーティング エラーが発生します

一致するルートがありません [GET]

上記の正規表現は、非空白のユーザー名 (jai) に対して機能し、空白のユーザー名 (jai lalawat) に対しては機能しません。

4

2 に答える 2

4

ブラウザは、空白を に置き換えます%20。したがって、正規表現もそれに一致するように変更してください。

match 'profile/:username' => 'users#show', :as => :profile, :constraints => { :username => /[ a-zA-Z0-9\-\_20% ]+/ }
于 2013-11-11T13:00:51.127 に答える
1

上記のルート用に、routes.rb に %20 文字を追加します

match 'profile/:username' => 'users#show', as: :profile, constraints: { username: /[ a-zA-Z0-9\-\_20% ]+/ }
于 2013-11-11T13:41:05.833 に答える