3

私は自分のアプリケーションにカスタムルートを持っています.paramが数値または数値のリストであるたびに一致する必要があります.|

これは私のコードです:

get '/lists' => 'cidades#list'
get '/list(/:id)' => 'cidades#list', :constraints => { :id => /[0-9|]+/ }
get '/list(/:name)' => 'cidades#list'

私が達成したいのは次のようなものです:

/lists => cidades#list

/list/1 => cidades#list & param[:id] = "1"
/list/1|2|3|4 => cidades#list & param[:id] = "1|2|3|4"

/list/1a => cidades#list & param[:name] = "1a"

この正規表現を使用すると、/[0-9|]+/有効1aになりますが、これは望ましくありません。私はこの正規表現を見つけました:/\A[0-9|]+\Z/しかし、これは私にこのエラーを与えます:

ArgumentError (Regexp anchor characters are not allowed in routing requirements: /\A[0-9|]+\Z/):

数値文字列のみに一致する制約を作成するにはどうすればよいですか? (数字だけの文字列)

4

2 に答える 2

4

デフォルトでは、Rails はルーティングの正規表現を固定するため、\Aandは必要ありません\Z。このパターンに従うものを探していると思います:

:constraints => { :id => /[0-9]+(\%7C[0-9]+)*/ }

これにより、ルートに少なくとも 1 つの整数 (0-9) が強制されます。オプションで、ルートの後に | を付けることができます。文字 (%7Cブラウザによって変換されます)。| | 文字の後に追加の整数 (0 ~ 9) が続きます。このパターンを独自のグループに入れることで、長引く | を防ぐことができます。整数 ID の後。

于 2012-10-24T13:35:28.803 に答える
0

あなたは特別なキャラクター以外のものを使わなければなりません| URLでは許可されていません。

あなたがここで何をしようとしているのかよくわかりません。ただし、:idをidの配列として渡すことはできます。

ids = [1,2,3,4]

于 2012-10-24T13:34:00.970 に答える