2011-09-13 2 views
1

いくつかのドキュメント(およびドキュメントコントローラ)があります。これらは、限定された固定セットのカテゴリを使用してソートされています。私は私のルートは、アカウントにこれらのカテゴリをしたいと思いますので、私のURLは次のようになります。フィルタリングするために:[カテゴリ]私のparamsにアクセスすることを可能にするはずであるので、上のRails 3ルーティング:手っ取り早いルートをカスタマイズする

/documents/:category/:id 
/documents/:category/new 
/documents/:category/:id/edit 

...と結果。これを達成する簡単な方法はありますか?はまだパスヘルパーを生成します?それともこのようにするのは間違っているのですか?

+0

カテゴリに属する​​特定のIDを持つドキュメントが正しいと思っていますか? –

+0

そうです。私は現在 'resources:documents、:path =>" documents /:category "'を使っていますが、うまくいくようです...大丈夫ですか? –

+0

::path変数を好きなものに変更できます。カテゴリはドキュメントの後に指定されているため、これはあまり名前空間ではありません。これは、custom:パスを持つネストされたリソースのようなものです。名前空間とネストされたリソースの詳細については、http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routingをご覧ください。 –

答えて

2

あなたは(あなたが述べたように)リソースへのパスを提供することができます。

# config/routes.rb 
resources :documents, :path => 'documents/:category' 

をこれはあなたの次のルートを与えるだろう:

/documents/:category 
/documents/:category/new 
/documents/:category/:id/edit 
/documents/:category/:id 

私はこの場合、どのような目的にはわかりませんプライマリキーでドキュメントを参照できるので、カテゴリキャプチャが機能します。このキーはカテゴリ間で繰り返されることはほとんどありません。

+0

あなたはPKについては正しいですが、私はアクセス可能なドキュメントの範囲を絞り込めたいと考えています。そして、私がこれを書いているように、私のアプローチはおそらく良いものではないことを理解できます。たぶん私は狭いスコープで多くのインデックスのようなアクションを持つためにこれが本当に必要なだけなので、私のコントローラでカテゴリごとにアクションを取るべきでしょう。私はメタプログラミングを介してこれらのアクションを生成することもできます...これを手伝ってくれてありがとう。 –

2

それはあなたのパスヘルパーdocument_path(:id)を与えるだろうRailsの3

match '/documents/:id', to: 'documents#show', as: :documentにパスをカスタマイズすることは難しいことではありません。これは数値ではなく文字列のIDに対しても機能するため、このパターンを/documents/:category/:id/editに拡張することは問題ありません。

関連する問題