2011-02-06 14 views
0

を砕きダブルネストされたルートは、私はこれらのルートを持っている:URL doesntのは、二重にネストされたことがあるようにRailsの

map.resources :categories do |category| 
    category.resources :sub_categories 
    end 

    map.resources :sub_categories do |sub_category| 
    sub_category.resources :events 
    end 

これがあるだけでは、私は深い二つのオブジェクトの最大のURLを保存しておきたいです。

問題は、イベントのために、は私が/ sub_categories /にそこ要求したいということです。path_prefixとしてsub_category_idが、

map.resources :events, path_prefix => '/sub_categories/:sub_category_id' 

を使用して私に

event_path 
のようなルートを提供します

私が持っているものは

です

ユーザーが* sub_category *にアクセスしたい場合は、urlに* category_id *を指定する必要がありますが、ユーザーがイベントを見たい場合は、sub_category_idを指定する必要があります。

答えて

0

私はちょうどこれを得ることができました。しかし、私は@wuputahが提案したカスタムヘルパー、または私の方法として投票した人々の希望でここに残します。

map.resources :events, :path_prefix => 'sub_categories/:sub_category_id', :name_prefix => 'sub_category_' 

は、私はその名前を変更し

+0

FWIW ..を探していたルートではなく、それが受け入れる引数を生成します。 – wuputah

+0

それは両方を行います... – Rabbott

1

あなたは正しく、event_pathを生成しますが、event_pathには:sub_category_idオプションが必要です。 sub_category_event_pathヘルパーを取得するには、一つだけを書く:あなたはsub_category_event_urlをしたい場合

class ApplicationController < ActionController::Base 
    private 
    def sub_category_event_path(sub_category, event) 
    event_path(event, :sub_category_id => sub_category) 
    end 
    helper_method :sub_category_event_path 
end 

残念ながら、あなたもその1を記述する必要があります。

Rails 3には、興味のある浅いルートがいくつかサポートされています。アップグレードを検討してください!

関連する問題