2009-11-30 6 views
0

이 내 설정/routes.rb 파일에서 발췌 한 것입니다네임 스페이스 자원

resources :accounts do |account| 

     account.resource :profile, :except => [:new, :create, :destroy] 

     account.resources :posts, 
         :collection => { :fragment => :get }, 
         :has_many => [:comments, :likes] 

     # even more code 

end 

내가 중첩 된 각 자원이 계정 네임 스페이스에서 같은 계정을로드 할 것을 싶습니다 ::가 PostsController 대신 게시물 컨트롤러.

리소스 사용 :accounts, :namespace => 'account'은 AccountPostsController를로드하려고합니다.

둥지에 노력하는 구조가 정말 그렇게 잘 작동하지 않습니다

map.namespace :account do |account| 
.. 
end 

앞의 코드는 내가 원하는 위치에서 파일을로드 할 것이다, 그러나 그것은 url 및 생성에 네임 스페이스를 추가하지 그래서 나는 account_account_posts_url 같은 경로와 같은 방법을 가질 것이다. 이 두 코드 중복을 포함하고 레일 마법 헬퍼의 일부를 제거하는 저를 강제로 내가 정말 싫어

account.resource :profile, :controller => 'account/profile' 

:

또 다른 대안은 같은 것을 사용하는 것입니다.

의견이나 제안이 있으십니까?

+0

작동해야하는 항목에 대한 업데이트를 참조하십시오. –

답변

1

어때?

map.resources :accounts do |accounts| 
    accounts.with_options(:namespace => "account") do |account| 
    account.resource :profile, :except => [:new, :create, :destroy] 
    ... 
    end 
end 

나는 이것을 시도하지 않았으므로 작동하지 않을지는 몰라도 시작일뿐입니다. Rails Routes로 수행 할 수있는 작업에 대한 자세한 정보와 옵션은 Rails Routing을 참조하십시오.

은 아래로 투표 후

그래서 나는 몇 가지 테스트를 실행. 변경 내 routes.rbrake routes을 실행하면 (내가 시작했던 것과 아주 가까이) 다음과 함께했다 : 이것은 당신을 얻는다

map.resources :accounts do |accounts| 
    accounts.namespace :account do |account| 
    account.resource :profile, :except => [:new, :create, :destroy] 
    end 
end 

당신이 원하는 것을. 올바른 URL이며 account/... 컨트롤러를 가리 킵니다.

+0

많은 감사. 누가 당신을 변조 시켰는지 모르지만, 당신은 분명히 저에게서 +1을 얻습니다. – vise

+0

걱정할 필요가 없습니다. 다행히 필요한 경로 정의를 얻었습니다.다운 마크는 '나는 이것을 시도하지 않았으므로 그것이 효과가 있을지 모르겠다'라는 진술로 인해 더 많은 가능성이 있었다. –

0

그래서 네임 스페이스에 무엇이 잘못 되었습니까? 나는 이것이 당신이 뭘하려는 건지 생각 :

map.namespace :account do |account| 
    account.resource :profile 
end 

응용 프로그램/컨트롤러/계정/profiles_controller.rb에서 컨트롤러를로드하려고합니다 및 account_profile_path 같은 경로를 생성합니다.

이 코멘트에 따라 업데이트 :

map.resources :accounts do |account| 
account.resource :profile 
end 

당신에게 을 줄 것이다// 22/프로필를 차지한다.

+0

답장을 보내 주셔서 감사합니다. 죄송합니다. 취소하지 않으셔서 죄송합니다.하지만 내가 밟은 경로는 다음과 같은 경로입니다. /accounts/22/profile 위의 코드는 계정/프로필을 생성합니다. – vise