2009-08-05 7 views
0

は現在、私は、手続きに属している手順を持っています。ダブルネストされたルーティング

は、しかし、私はもう一つの層を追加したいと仮定し、手順に所属する数値を得るために、この:/手順/ 3 /ステップ/ 5 /フィギュア/ 1

それはさておきURLのモンスターであること、どのように私はこれのルーティングを行うだろうか?

を編集してください:にする必要がありますか?図は、単に私がステップで表示する画像用のコンテナであるため、ユーザーが実際に図を訪問するようなものではなく、Figureから画像を取得するだけです。

+0

を、URI表現はRESTに直交しています。さらに、同じリソースのサブセットに対して異なるURIを使用している場合(同じメディアタイプを使用している場合)、おそらくRESTの制約に違反している可能性があります。階段に属する図形については、/ figures/1?step = 5の線に沿ったものが良いかもしれません。 – aehlke

答えて

2
map.resources :procedures do |procedure| 
    procedure.resources :steps do |step| 
    step.resources :figures 
    end 
end 

あなたは数字が/そして使用/などのルートが必要な場合:あなたの意見で

map.resources :procedures, :shallow => true do |procedure| 
    procedure.resources :steps do |step| 
    step.resources :figures 
    end 
end 

を、それはのようなものだ:だけ知っているので

<%= link_to "Figure", figure_url(@procedure, @step, @figure) -%> 
1

このblog postは私の頭の上から外すことができます。基本的には、あなたが探しているものを得るためにあなたのルートを定義するときに:name_prefix optionを使うことができます。

+0

その記事によると、私は単純にこれをしてはならず、代わりにmap.resources:steps、:has_many =>:figuresのようにしてください。 しかし、ユーザーが実際に図に行くことはないと仮定しますが、Figureは単にステップで使用されます。私はまだそれを切り離すべきですか、それとも大胆な二重のものとして残すのは大丈夫ですか? – Karl

1

あなたのコメントから、私はあなたが正しいと思います。あなたはフィギュアに通る必要はなく...あなたのルートを不必要に複雑にすることは決してありません。

これは、あなたが行こうとしているところが一番遠いように聞こえます。あなたのステップのShowアクションになるでしょう...そして、そのステップの数字のリストをActiveRecordに聞いてみましょう。つまり、あなたは

class Step < ActiveRecord::Base 
    has_many :figures 
end 

class Figure < ActiveRecord::Base 
    belongs_to :step 
    has_many :images #perhaps? 
end 

を持っていますが、ルーティングのためにあなただけのRESTfulに要求されますリソースを気にする必要がある - この場合には、それはあなたのproceduresのように見え、およびそれらに関連しますsteps。質問に記載されているルートは、私にスポットライトで見えます!

関連する問題