2012-12-16 1 views
0

블로그 모듈이있는 웹 사이트를 만들고 있습니다. 블로그 게시물은 초안이거나 게시 될 수 있습니다. ,레일 라우팅 : URL에 편집 접미어를 제거하십시오.

게시 된 후 더 이상 편집 할 수 없습니다, 그리고 초안 내가 blog/drafts를 사용하여 초안 목록에 액세스 할 수 있습니다

resources :posts, :path => "blog" do 
    collection do 
    get 'drafts' 
    end 
end 

나는 현재 자원이 정의

(만 편집)를 볼 수 없습니다 blog/new을 사용하여 새 글을 작성하고 초안을 blog/:id/edit 통해 편집하십시오.

그러나, 나는이 새로운 방식을 사용하는 new, create, editupdate 경로를 정의 할 필요가 blog/drafts/:id

사용 blog/drafts/new를 사용하여 생성하고 편집 할 수있는 새로운 초안을 싶습니다. newcreate 경로는 매우 간단합니다. 그러나 작업 이름 부분을 제거하려면 edit 경로를 처리하는 방법을 모르겠습니다.

member do 
    get :edit if parent_resource.actions.include?(:edit) 
    get :show if parent_resource.actions.include?(:show) 
    [...] 
end 

내가 레일이 :edit:show 경로를 구분하는 방법을 이해하고 그에 따라 URL을 매핑하지 않습니다 또한

는 기본 경로 정의를 보면서, 나는 다음과 같은 actionpack-3.2.9/lib/action_dispatch/routing/mapper.rb에서 발견.

감사합니다.

답변

2

다음 경로를 사용할 수 있습니다. 다른 파일 계층 구조가 필요하다는 것을 염두에 두십시오. rake routes이 자신의 친구 여야합니다.

namespace :blog do 
    resources :drafts, :controller => :posts, only: [:new, :edit] 
    resources :posts, only: :show 
end