我的組織正在考慮將現有Rails monolith重新實現爲Rails服務的集合。對於內容層,我們認爲我們的API網關將包含整個應用程序的佈局信息,並且會通過HTTP請求各個視圖。然後,單個服務將呈現其模板並通過HTTP將其作爲呈現的HTML發回。以本地佈局渲染遠程視圖
我的問題是:Rails中是否有一種機制通過HTTP請求遠程內容,將接收到的HTML渲染爲ERB/HAML佈局模板,然後提供完全呈現的HTML?
我的組織正在考慮將現有Rails monolith重新實現爲Rails服務的集合。對於內容層,我們認爲我們的API網關將包含整個應用程序的佈局信息,並且會通過HTTP請求各個視圖。然後,單個服務將呈現其模板並通過HTTP將其作爲呈現的HTML發回。以本地佈局渲染遠程視圖
我的問題是:Rails中是否有一種機制通過HTTP請求遠程內容,將接收到的HTML渲染爲ERB/HAML佈局模板,然後提供完全呈現的HTML?
就像在控制器中請求該信息然後在ERB模板中將其輸出爲字符串一樣?
是否還有其他一些要求,我錯過了?
控制器
def index
@content = body_of_request_to_service
end
查看
...
<%= @content %>
...
但是,除非你有一個開發團隊,理解如何我不建議使用Ruby (微服務的這種風格處理異步Ruby IO)。一個好的經驗法則是每個客戶端請求只有一個阻塞服務請求。
當你在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
)