1

次のようなルートがあります。

match '/pages/:name/preview' =>  'pages#page_preview'

しかし、このようなルートが来ると、「ルートが一致しません」というエラーが表示されます/pages/a.com/preview。をURLエンコードしてみました。の文字%2Eですが、その後も同じエラーが発生します。resources :pagesまた、プレビュー ルートを定義する前に、ページ ( ) にリソースをセットアップしました。

名前パラメーターに文字が含まれていない他のすべてのルートでは、ルートは正常に機能してい.ます (スペースや ? などは正常に機能しています)。

4

1 に答える 1

4

これは、書式設定されたルートの区切り記号としてドットが使用されるためです。これを回避するには、これをオーバーライドする制約を追加します。

match '/pages/:name/preview' =>  'pages#page_preview', :constraints => { :name => /[^\/]+/ }

これにより、スラッシュ以外はすべて許可されます。

于 2013-01-18T07:34:59.067 に答える