1

필자는 훌륭한 린 컨트롤러를 가지고 있습니다. 추가로 DRY하려면보기를 공유하고 싶습니다. 따라서 여러 컨트롤러가 동일한 편집 및 새보기를 사용합니다. 그래서 generic editnew보기를 포함하는 리소스라는 템플릿의 디렉토리를 만들었습니다.여러 컨트롤러에 대한 템플릿을 정의하는 방법

나는이보기를 공유하고자하는 컨트롤러가 여러 개 있습니다 (자체 쇼 템플릿과 양식이 있음). 이 컨트롤러들 각각은 현재베이스 ResourceController에서 상속받습니다. 기본적으로 이러한 컨트롤러 중 하나라도 뷰가 누락되면 Rails는 뷰를 찾기 위해 상속 체인을 따릅니다. 따라서 내 NewsItem 컨트롤러에 edit 템플릿이 없으면 Rails는 자동으로 resources을 찾습니다. 그러나 모든 컨트롤러가 단일 컨트롤러에서 상속받을 필요가 없도록하고 싶습니다. 필자의 경우 이것은 원하지 않는 추가 컨트롤러를 상속 체인에 추가합니다. 나는 컨트롤러가 공유하는 자원 내성을 믹스 인으로 옮기는 것을 선호한다.

그러나 이렇게하면 Rails는 더 이상 resources보기 디렉토리에서 누락 된 템플릿을 찾지 않습니다.

모든 컨트롤러에서 동일한 '리소스/and 리소스/새 템플릿'을 렌더링하고 싶지 않으므로 어떤 템플릿을 선언적으로 어떤 동작에 사용할 지 선언하는 방법이 있습니까? 믹스 인에서 선호?

답변

2

prepend_view_path을 찾고 계신 것 같습니다. 그래서 그걸 가지고 예를 들어 가질 수 있습니다. 당신이 당신의 컨트롤러에 포함 MyResources 우려 모듈 :

module MyResources 
    extend ActiveSupport::Concern 

    included do 
    prepend_view_path File.join('app', 'views', 'resources') 
    end 
end 

는 그런 다음 MyResources 물을 포함하는 컨트롤러, 뷰 템플릿을 확인하는 첫 번째 경로가 app/views/resources/ 될 것입니다, 보통의 위치 하였다.

+0

물론. 고마워. – Undistraction

관련 문제