我有一个问题,我正在对Ruby on Rails生成的模板进行功能共享。 我想在项目 A 中编写一个 API 以在"admin/shared/mypage"中共享模板,以便在项目 B 时我可以调用该 API 来获取项目 A 中的模板。 我尝试共享包含 html 的模板并遇到问题,它工作正常,但对于具有 Rails 语法的模式,它会崩溃。 谁能帮我解决这个问题。谢谢!
您应该能够使用render_to_string
通过 API 发送模板,然后在发出请求的项目视图中显示此响应。
例如:
项目B 调用项目 A 的 API 终结点,传入相关参数。
项目 A 获取这些参数并使用它们加载模板,并将其作为字符串返回:
def endpoint
# render your erb template, with a `params` (or whatever you need) variable available
render_to_string 'admin/shared/mypage', locals: { params: params }
end
项目 B 接收此响应并将其分配给控制器中的变量:
def your_controller_action
@template = the_response_from_project_a
end
项目 B 在视图中显示此响应:
# your_view.html.erb
<%= @template.html_safe %>
关于如何显示后者有一些争论,如果您想阅读更多内容,请在此处进行很好的讨论。
我没有可用的设置来测试这一点,所以有几个快速点:
- 我不记得
render_to_string
是否需要locals
或直接传递的变量哈希
值 - 您可能仍需要在 API 控制器中将 JSON 呈现为响应,即
render json: { template: render_to_string...
.
最后,我不确定通过 API 传递整个模板是否理想 - 你知道你的情况,但要考虑是否可以传递更简单的数据。
希望这有帮助 - 任何问题或意见,让我知道!