以本地布局渲染远程视图

时间:2016-07-25 20:27:52

标签: ruby-on-rails microservices

我的组织正在考虑将现有的Rails monolith重新实现为Rails服务的集合。对于内容层,我们的想法是我们的​​API网关将包含整个应用程序的布局信息,并将通过HTTP请求单个视图。然后,各个服务将呈现其模板,并通过HTTP将其作为呈现的HTML发回。

我的问题是:Rails中是否有一种机制可以通过HTTP请求远程内容,将收到的HTML呈现为ERB / HAML布局模板,然后提供完全呈现的HTML?

2 个答案:

答案 0 :(得分:0)

在Rails中渲染模板时,没有任何内容限制标记的来源。通常它会来自本地找到的*.html.erb模板。

当预渲染的html片段来自外部源时,您可以这样做:

render html: my_html_string.html_safe

如果你想要一个布局,那么:

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

外部源可以使用html格式渲染器或作为字符串为my_html_string提供服务,以便稍后序列化为例如json。

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

答案 1 :(得分:0)

就像在控制器中请求该信息然后在ERB模板中将其作为字符串输出一样?

还有其他要求我不在吗?

<强>控制器

def index
  @content = body_of_request_to_service
end

查看

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

但是,我不建议使用Ruby 来推荐这种微服务(除非你有一个了解如何处理异步Ruby IO的开发团队)。一个好的经验法则是每个客户端请求只有一个阻止服务请求。