2009-08-05 2 views
0

현재 나는 절차에 속하는 단계가 있습니다.두 번 중첩는 라우팅

는 그러나, 나는 또 하나 개의 레이어를 추가하고 싶었 가정 단계에 속하는 그림이 얻을이 :/절차/3/단계/5/숫자/1

그 옆으로 URL의 괴물 인, 얼마나 정확하게이 라우팅을 수행 할 수 있을까요?

편집 : 아마도 이것을 제쳐두어서는 안됩니다. 해야합니까? 그림은 단순히 단계에 표시 할 이미지 컨테이너이므로 사용자가 실제로 그림을 방문하는 것과 달리 그림에서 이미지를 가져와야합니다.

+0

: 귀하의 의견에

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

을이 같은입니다. 또한 동일한 리소스의 하위 집합에 대해 다른 URI를 사용하는 경우 (동일한 미디어 유형을 사용하는 경우) REST 제약 조건을 위반하는 것일 수 있습니다. 계단에 속하는 그림의 경우,/figures/1? step = 5의 선을 따라 보이는 것이 더 좋을 수 있습니다. – aehlke

답변

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

는 : URI 표현은 휴식을 직교, 그냥 알다시피

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

blog post은 내 머리 꼭대기에서 더 잘 설명합니다. 기본적으로 경로를 정의 할 때 :name_prefix option을 사용하면 원하는 정보를 얻을 수 있습니다.

+0

그 기사에 따르면 나는 이것을 간단히해서는 안되며 대신 map.resources : steps, : has_many => : figures와 같은 것을하십시오. 그러나 사용자가 실제로 그림으로 이동하지는 않겠지 만 그림은 단계에서 간단히 사용됩니다. 나는 여전히 그것을 분리해야 하는가 아니면 거대한 이중 중첩 된 것으로 남겨 두어도 괜찮습니까? – Karl

1

귀하의 의견에 따르면, 나는 당신이 맞다고 생각합니다. 당신은 인물로가는 길을 갈 필요가 없을 것이며, 당신은 불필요하게 노선을 복잡하게 만들고 싶지 않을 것입니다.

당신이 가야할 가장 먼 소리가 나는 것처럼 보입니다. 단계를위한 Show 액션이 될 것입니다. 그러면 ActiveRecord에 그 단계의 인물 목록을 요청할 것입니다. 관련 그것은 당신의 procedures처럼 보이는이 경우, 그리고 - 즉,

class Step < ActiveRecord::Base 
    has_many :figures 
end 

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

을해야합니다,하지만 라우팅 만 RESTfully하게 요청됩니다 자원에 대한 관심 필요 steps. 질문에 나열된 경로가 나에게 찾아 보입니다! 이 수치는/후 사용/같은 경로가 필요한 경우