2011-12-01 9 views
5

내가하고 싶은 일은 두 개의 다른 컨트롤러, client 및 test_client가 있습니다. 클라이언트 컨트롤러가 이미 구축되었고 클라이언트의 UI로 놀고 필요에 따라 조정할 수있는 test_client 컨트롤러를 만들고 싶습니다. 나는 주로 클라이언트에 내장 된 유효성 검사와 데이터를로드하는 관리 컨트롤러에 대한 의존성을 해결하려고 노력 중이다.다른 컨트롤러 뷰 렌더링

그래서 나는 test_client 컨트롤러가 예제 데이터 세트를로드하고 클라이언트 UI를 조정할 수 있도록 클라이언트 컨트롤러의 인덱스 뷰를 렌더링하고 싶습니다. 그게 전부입니다.

나는 test_clients 인덱스 방법이 시도 :

class TestClient 
    def index 
     render :template => 'client/index' 
    end 
end 

하지만 그것이 현재 컨트롤러에보고 그들을 볼대로 클라이언트 부분 지문을 찾을 수 없기 때문에 나는 오류가 ...

그래서 나는 이것을 이미 들여다 보았고 대부분의 사람들은 당신이 그런 전화를하지 말아야한다고 말합니다. 그러나 나는이 경우가 합당한 사용법이라고 생각합니다. 단지 그것이 작동하도록하는 방법을 찾아야합니다.

+0

당신은 자식을 사용하고 있습니까? 왜냐하면 이것은 git 브랜치 IMHO를위한 좋은 유스 케이스이기 때문이다. – lucapette

+0

실제로 svn을 사용하고 있지만 좋은 생각입니다. 나는 다음 프로젝트에서 그것을 시도 할 것이다. – german129

답변

6

필요한 부분까지의 경로가 'controller/partial' 인 모양으로 조정해야합니다. 이 경우 아마도 'client/partial'입니다. 이전과 마찬가지로 render 'client/index'을 사용하면됩니다.

그래서 당신이이보기에 어딘가 말 :

<%= render :partial => 'info' %> 

당신이로 변경하기를 원할 것입니다 : 모든 빈 뷰, 파셜에 클라이언트 컨트롤러 뷰를 변환

<%= render :partial => 'client/info' %> 
+0

비록 내가 컨트롤러 이름을 변경하지 않으면 컨트롤러가 하드 코딩 된 것을 막대한 팬이 아니더라도이 솔루션은 아무런 영향을주지 않을 것입니다. – german129

+1

여러개의 컨트롤러에서 사용되는 부분적인 부분이라면 보통 app/views/shared 아래에 두었습니다. 그런 다음 render : partial => 'shared/info'' 또는 비슷한 것을 사용합니다. 그러면 더 나은 이름을 지을 수 있습니다. – Mario

0

여러 가지 방법으로이 작업을 수행 할 수 있으며 모두가 다릅니다. 당신이 그것을 할 수있는 한 가지 방법은 당신의 파인더를 발표자로 보내는 것입니다. 그런 다음 인덱스보기의 일부 데이터를 부분으로 돌리거나 레이아웃을 false로 설정하여 템플릿을 렌더링 할 수 있습니다.

그런 다음 client_test보기에서 연관된 표현자를 사용하여 해당 색인을 렌더링 할 수 있습니다.

2

만들 test_client 컨트롤러에서 동작, 각 test_client 뷰에 대한 클라이언트 부분을 렌더링합니다.

예 : index.html.erb가

test_client보기
index.html.erb이보기
, <% = 렌더링하기 _index.html.erb

클라이언트 뷰 : 일부 = > 'clients/index', : locals => {} %>