2012-07-05 2 views
1

나는 padrino 응용 프로그램에서 Exhibit pattern을 사용하려고 시도하지만 제대로 수행하려면 렌더링 컨텍스트에 액세스해야합니다. 즉, context과 같은 객체가 필요합니다. context.render('accounts/index')의 라인을 따라 호출하면 render 'accounts/index'이 컨트롤러 내부에서 호출 될 때 동일한 출력을 생성합니다 (모든 변수가 동일하게 설정되고 app/views/accounts/index.erb이 템플릿 파일이라고 가정).sinatra/padrino에서 사용 가능한 렌더링 컨텍스트가 있습니까?

padrino 공용 API에서이 작업을 수행 할 수없는 항목을 찾을 수 없으므로 더 자세히 조사하려고 시도했습니다. 컨트롤러의 기존 render 메서드는 sinatra의 render 메서드를 래핑합니다.이 메서드는 전용 인스턴스 메서드입니다. 따라서 클래스 MyApp (즉, Padrino::Application 하위 클래스)에서는 분명히 정의되지 않았습니다. MyApp.new은 그 자체가 아닌 Rack::Session::Cookie의 결과를 낳습니다. 전용 render 메서드를 호출하면 context 개체에 적합한 후보가 될 응용 프로그램의 기존 인스턴스를 찾을 수있는 패드 리노 메서드가 없습니다.

주어진 sinatra와 padrino의 디자인을 고의로 다루는 것이 본질적으로 너무 어려운 것입니까, 아니면 여기에없는 것입니까?

답변

1

나는 읽기만 계속한다면 그 해답은 오브젝션 온 레일스 책에 있다는 것을 알고 있습니다. 템플릿 내에서 명시 적으로 컨텍스트를 전달해야했습니다. exhibit(object, self) 템플릿 내에서 템플릿의 렌더링 컨텍스트가 두 번째 인수로 전달됩니다. 당연하지.

나는 이것이 정말로 padrino에만 국한된 것은 아닐 것입니다. 그리고 그 대답이 매우 간단 할 때 나는 뭔가 복잡한 것을 찾고있었습니다.

관련 문제