2017-10-15 6 views
-1

FriendlyIDを使用しているアプリケーションがあります。私は現在、このような各ルーティングいるRails Friendly ID Routes

/some-category 
/a-service 

resources :cats 
resources :services 

をへ

/cats/some-category 
/services/a-service 

:私は現在、2つのモデル、私はこのことから有効にしたいと思います猫とサービスを持っていますバックエンドで管理機能を同じにしておき、フロントエンドでのみルートを変更したいと思います。

私は...

:path => '' 

を使用してみました...しかし、それはadminにバックエンドルーティングを台無しに。

思考?あなたは

/some-category 
/a-service 

/cats/some-category 
/services/a-service 

を回すことができない理由

+0

のようなURLを短縮することができますフェッチするオブジェクトを識別します。 – krishnar

答えて

2

主な理由は、いくつかの明確なルーティングの問題によるものです。あなたの最大の問題はもちろん、猫とサービスはどちらも異なるコントローラーによって処理され、両方のコントローラーを1つのルートでマッシュする方法はありません。

あなたがこの作品を作りたい場合は、あなたが最初に新しいコントローラを作成する必要があり、この

get '/:id' => 'friendly#index' 

ような何かを FriendlyController

FriendlyController

とあなたのroutes.rbで言います

これはうまくいくが、なぜこの長期的な見通しからは悪い考えです。

  1. の最初のレールが適切に特定の場面で迎えにどのルートを評価することはできないであろうと、プロジェクトが成長したら、これは後で可能ルートの競合の多くを引き起こします。

  2. あなたは同じフレンドidで猫とサービスをどうやって扱いますか?


あなたは本当に代わりに、コントローラの友好IDに重点を置きたい場合は、ちょうどあなたがこのような経路が必要な場合、それはすることは困難ですので、

resources :cats, as: 'c'