通过 API 共享 Rails 模板



我有一个问题,我正在对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 传递整个模板是否理想 - 你知道你的情况,但要考虑是否可以传递更简单的数据。

希望这有帮助 - 任何问题或意见,让我知道!

最新更新