2016-10-04 5 views
1

나는 깔끔한 파일 구조를 유지하기 위해레일 5 - 중첩 된

레일 (5)에서 응용 프로그램을 만들려고 노력하고있어, 내 컨트롤러 디렉토리 안에 폴더를 만들려고 경로와 컨트롤러, 내가 할 수있는 그 유사한 자원을 그룹화하는 데 사용하십시오.

예를 들어, 내가 가진 :

app/controllers/users/users_controller.rb 

나는 다음 사용자와 관련된 모든 리소스를 사용자 폴더 아래에 그룹화되도록 내 세션 컨트롤러는 컨트롤러/사용자 디렉터 안에 중첩 할 수 있습니다.

내 경로 파일과 관련하여 꼼짝 못하게되었습니다. 내가 경로를 긁어 때

, 내가 볼 수 있습니다 : 내 루트 파일에서

users#index {:controllers=>{:users=>"users/users"}} 
           POST  /users(.:format)      users#create {:controllers=>{:users=>"users/users"}} 
         new_user GET  /users/new(.:format)     users#new {:controllers=>{:users=>"users/users"}} 
         edit_user GET  /users/:id/edit(.:format)    users#edit {:controllers=>{:users=>"users/users"}} 
          user GET  /users/:id(.:format)     users#show {:controllers=>{:users=>"users/users"}} 
           PATCH /users/:id(.:format)     users#update {:controllers=>{:users=>"users/users"}} 
           PUT  /users/:id(.:format)     users#update {:controllers=>{:users=>"users/users"}} 
           DELETE /users/:id(.:format)     users#destroy {:controllers=>{:users=>"users/users"}} 

을, 나는 몇 가지 (아래에 제시)을 시도했습니다 - 그들 중 누구도 작동하지 :

Rails.application.routes.draw do 
    devise_for :users, 
      :controllers => { 
       :sessions => 'users/sessions', 
       :registrations => "users/registrations", 
       :omniauth_callbacks => 'users/omniauth_callbacks' 
       } 

    resources :identities, 
    :controllers => { 
     :identities => 'users/identities' 
    } 


    resources :users do 
    scope module: :users do 
    resources :users 
    end 
    end 

    root 'home#index' 

end 

나는 또한 시도 :

을 :

resources :users, 
    :controllers => { 
     :users => 'users/users' 
    } 

때마다, 나는 말한다 오류가

ActionController::RoutingError at /users 
uninitialized constant UsersController 

이 작업을 수행하기 위해 내가 무엇을해야하는지 모르겠습니다.

Users:: 

사람이 내가 깔끔하게 정리 내 파일을 보관할 수 있도록이를 설정하는 방법을 볼 수 : 컨트롤러/사용자의 접두어로 폴더 안에 나는 중첩되어 내 컨트롤러의 각을 변경 한?

참고 : 모델 폴더에 동일한 파일 디렉토리 구조를 만들지 않았습니다. 내가 원한다면 -하지만 나는 컨트롤러에 대해 이것을 이해할 수 없다고 우려하고있다. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니?

+0

기본 컨트롤러 디렉토리에 실제'users_controller'를 넣고 중첩 컨트롤러를'users' 디렉토리 안에 넣는 것 (즉, 중첩과 동일한 구조를 따르는 것)을 권장합니다. –

답변

3

기본 컨트롤러 디렉토리에 실제 users_controller을 넣고 users 디렉토리 안에 중첩 된 컨트롤러 만 넣는 것이 좋습니다 (즉, 중첩과 동일한 구조를 따르십시오). 그것을 참조 다음

module Users 
    class UsersController < ApplicationController 
    ... 

과 : Users::UsersController 난 항상 약간 성가신 이름의 중복을 찾을

대안은 Users 모듈 내부 즉, 기대 레일 users_controller 와이오밍 이름을 지정하는 것입니다 , 기본 디렉토리에 있어야하는 최상위 컨트롤러를 선호합니다.

+1

Taryn 대단히 감사합니다. – Mel