14

私は次のルートを持っています:

  get 'users/:user_id/:name', to: 'profiles#show',
    :constraints => { :name => /[a-zA-Z0-9_]+$/ }, as: 'user_profile'

エラーが発生します:

Regexp anchor characters are not allowed in routing requirements: /[a-zA-Z0-9_]+$/

したがって、^文字は許可されていませんが、どの文字がこの特定のルーティングエラーを生成しているかはわかりません。

4

2 に答える 2

18

正規表現アンカーはとですが^$ここでは何も達成しません。「すべてのルートは最初にアンカーされているので、アンカーを使用する必要はありません。」

したがって、制約は次のとおりです。

:constraints => { :name => /[a-zA-Z0-9_]+/ }

あなたが望むことをします-名前がそれらの文字の1つ以上で構成されていることを確認してください。ところで、正規表現を単純化することができます:

:constraints => { :name => /\w+/ }
于 2013-04-12T12:23:48.777 に答える
13

正規表現には2つのアンカーがあります。

  1. 行/文字列の先頭^
  2. 行/文字列の終わり$

パターンから削除$してみてください。そうすれば、うまくいくはずです...

于 2012-11-04T20:14:46.387 に答える