2016-07-25 40 views
0

我的組織正在考慮將現有Rails monolith重新實現爲Rails服務的集合。對於內容層,我們認爲我們的API網關將包含整個應用程序的佈局信息,並且會通過HTTP請求各個視圖。然後,單個服務將呈現其模板並通過HTTP將其作爲呈現的HTML發回。以本地佈局渲染遠程視圖

我的問題是:Rails中是否有一種機制通過HTTP請求遠程內容,將接收到的HTML渲染爲ERB/HAML佈局模板,然後提供完全呈現的HTML?

回答

0

就像在控制器中請求該信息然後在ERB模板中將其輸出爲字符串一樣?

是否還有其他一些要求,我錯過了?

控制器

def index 
    @content = body_of_request_to_service 
end 

查看

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

但是,除非你有一個開發團隊,理解如何我不建議使用Ruby (微服務的這種風格處理異步Ruby IO)。一個好的經驗法則是每個客戶端請求只有一個阻塞服務請求。

0

當你在Rails中渲染一個模板時,沒有什麼限制你的標記來自哪裏。定期來自當地的*.html.erb模板。

當預渲染HTML件來自外部源,你可以這樣做:

render html: my_html_string.html_safe 

如果你想有一個佈局,則:

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

my_html_string可以由送達外部來源,可以使用html格式的渲染器,也可以作爲一個字符串,稍後序列化爲例如json。

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