私はルートを使用しています:
match ':controller(/:action(/:id))', :constraints => {:id => /.*/, :controller => /[a-z]$/}
match ':controller', :to => :index, :constraints => {:controller => /[a-z]/}
get ':id' => 'user#show', :constraints => {:id => /.+/}
そして、私がrake show routesを実行すると、次のようになります。
/:controller(/:action(/:id))(.:format) {:id=>/.*/}
/:controller(.:format) :controller#index
GET /:id(.:format) user#show {:id=>/.+/}
:controllerの制約は表示されていません。
私の目標は、「M.Bovary」が'/ user / show /'、:id=>'Mにルーティングするようにリクエストすることです。ボヴァリー」。現在、IDはまったく渡されず、Mcontroller#indexにルーティングされています。"/ m" => "MController#index"
レールは制約の最初の部分と一致していて、残りの引数を「破棄」しているように見えます。制約は^または$または\Zを無視しているように見えるので、それはオプションではありません。