3

きれいなURLパスを作成する必要がある状況があります。

次のようなURLを処理する必要があるFilesControllerがあります。

mydomain.com/files/path/dir1/dir2/user/bob
mydomain.com/files/path/dir1/user/bob
mydomain.com/files/path/dir1
mydomain.com/files/user/bob

コントローラーでは、とparams[:path]の間のすべてを含め、その後のすべてを含めたいと思います(1人のユーザーのみを想定し、それはオプションです)。/path/userparams[:user]/user

私はこれを行うための最良の方法を探していroutes.rbます。ファイル内のステートメントが1つだけであることが望ましいです。/path最も難しい部分は、ファイルへの実際のパスが提供された後、N倍の深さになることだと思います。

4

2 に答える 2

4

ルートグロブが必要です:

match 'files/*path/user/:user' => 'user#files'

パスがない場合は、ルートを追加する必要がある場合もあります。

match 'files/user/:user' => 'user#files'
于 2012-12-23T00:19:44.670 に答える
1

クリス・ヒールドの答えのおかげで、私はシナリオに合ったこれを使うことになりました:

match 'files/user/:user' => 'files#index'
match 'files/path/*path/user/:user' => 'files#index'
match 'files/path/*path' => 'files#index'

これがワンライナーで処理できたのではないかとまだ疑問に思っています。

于 2012-12-23T01:39:49.503 に答える