2016-07-25 2 views
0

내 조직은 기존 Rails 모노리스를 Rails 서비스 컬렉션으로 다시 구현할 것을 고려하고 있습니다. 콘텐츠 레이어의 경우 API 게이트웨이가 전체 앱의 레이아웃 정보를 포함하고 HTTP를 통해 개별보기를 요청한다는 생각을했습니다. 개별 서비스는 템플릿을 렌더링 한 다음 HTTP를 통해 HTML로 렌더링합니다.로컬 레이아웃의 원격 뷰 렌더링

내 질문은 : HTTP를 통해 원격 콘텐츠를 요청하고 수신 된 HTML을 ERB/​​HAML 레이아웃 템플릿으로 렌더링 한 다음 완전히 렌더링 된 HTML을 제공하는 메커니즘이 레일스에 있습니까?

답변

0

컨트롤러의 해당 정보를 요청한 다음 ERB 템플릿의 문자열로 출력하는 것과 비슷합니까?

다른 필수 조건이 있습니까?

컨트롤러

def index 
    @content = body_of_request_to_service 
end 

보기

... 
<%= @content %> 
... 

그러나, 당신은 어떻게 이해 dev에 팀이 없으면 내가 루비 을 (사용 microservices의이 스타일을 권하고 싶지 않다 비동기 Ruby IO 처리). 경험적으로 볼 때 클라이언트 요청 당 차단 서비스 요청은 하나만 있어야합니다.

0

레일스에서 ​​템플릿을 렌더링 할 때 마크 업의 출처를 제한하지 않습니다. 정기적으로 로컬로 발견 된 *.html.erb 템플릿에서 가져옵니다. 미리 렌더링 된 HTML 조각이 외부에서 올 때

이 작업을 수행 할 수 있습니다 my_html_string가에 의해 제공 될 수

render html: my_html_string.html_safe, layout: 'my_layout' 

:

render html: my_html_string.html_safe 

당신은 그 레이아웃을 원하는 경우 html 형식 렌더러를 사용하거나 나중에 직렬화 할 문자열 (예 : json)을 사용하는 외부 소스.

@my_html_string = render_to_string(
    template: 'templates/my_template.html.erb', 
    layout: false 
)