2011-12-10 2 views
2

직원 관리자라는 애플리케이션이 있다고 가정하면 employees 리소스가 있으므로 /employees/new은 신입 사원입니다. 이전 회사 이름을 갖고 싶습니다. 이 작업은 예를 들어 ford/employees/new은 ford에서 새 직원을 만들어야하고 exxon/employees/new은 exxon에서 새 직원을 만들어야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 즉 입력하기 귀찮을 수있는 URL에 추가 낭비 단어처럼 보이기 때문에레일 - 라우팅 : 컨트롤러/작업 이전에 하위 디렉토리 사용

이상적으로는 /company/exxon/employees/new 중첩 된 컨트롤러를 사용하고 싶지 않습니다 당신은 그런 식으로 떨어지게을 시도 할 수 있습니다

답변

4
scope ":company_name" do 
    resources :employees 
end 

자세한 내용은 Rails Guides on routing을 참조하십시오.

+1

또한': constraints => {: company_name =>/[a-z \ d _ \ -] +/i}'regexp를'scope' 호출에 추가하여이 쿼리와 일치하는 매개 변수를 제한 할 수 있습니다. 경로 순서를 조심하십시오. –

+0

": company_name"주위에 따옴표가 필요하지 않다고 생각합니다. – newUserNameHere

+0

"enterprises/: company_name/employees"와 같은 경로 세그먼트 (문자열)입니다. 비슷한 모양을하고있는 루비 심볼과는 관련이 없습니다. 직접 체험 해보십시오! –

0

:.

get "/:company/employees/new" => "employees#new" 

이 경우 GET 메서드를 사용하는 요청은 EmployeesController#new으로 전달되고 params[:company]에는 회사 이름이 전달됩니다.

+0

이 작업을 수행하는 편리한 방법이 있으므로 모든 단일 경로에서이 설정을 수행 할 필요가 없으며 여전히'resource : employees'를 사용할 수 있습니까? – Kvass

+0

'resource : employees'에 의해 생성 된 기본 RESTful 경로 앞에 동적 회사 이름을 추가하는 쉬운 방법은 없다고 생각합니다. –