【问题标题】:How to render HTML using a Ruby on Rails 5 API Application如何使用 Ruby on Rails 5 API 应用程序呈现 HTML
【发布时间】:2017-01-12 11:47:45
【问题描述】:

我们在 API 模式下使用 Ruby on Rails 5.0.0.1。为了能够在控制器中呈现 html 而不是 json,我需要添加哪些中间件和配置。

编辑:

谢谢大家的回答。

我想要的是呈现正常的erb/haml 视图。不是像提到的'kartik upadhyay'那样的json中的html。由于应用程序是主要的 JSON API,我们不想要完整的默认 Rails 安装,这意味着我们的应用程序控制器扩展自 ActionController::API

我的计划是制作一个 PdfRendering 控制器,其中包含 ActionView 工作所需的所有模块。我宁愿做的是读取资产管道(因为我们想使用 sass)并从ActionController::Base 继承应用程序控制器。就像其他 Rails 应用一样。

这不是最好的解决方案,因为您包含了整个 ActionController::Base 以及您可能没有使用的所有功能。但是,完整的 Blown Rails 安装(尤其是中间件又名会话等)仍然更苗条

【问题讨论】:

  • 您可以在不使用整个 Rails 框架的情况下使用模板。只需添加slimhaml,然后您可以执行Slim::Template.new(path).render(Object.new, users: users) 之类的操作,它会为您呈现html。

标签: html ruby-on-rails ruby api ruby-on-rails-5


【解决方案1】:
  include ActionView::Layouts
  include ActionController::Rendering

将这些添加到您的控制器

【讨论】:

  • 我可以知道每个模块的作用吗?
  • ActionView::Layouts 提供 Layout 并包含 ActionController::Rendering 提供模板渲染。使用它们,您可以渲染 *.html.erb
【解决方案2】:

您可以使用 rails 的 render to string 方法将您的 html 渲染为 json 中的字符串,将其放在您的控制器中:

render json: { data: render_to_string('html_file_name') }

这会将 html 呈现为如下响应:

{"data": "<html>\n<h3>hello</h3>\n</html>"}

【讨论】:

  • 这是他现在要求的。
【解决方案3】:

您可以渲染 erb/haml/slim 等文件,如下所示:

format.html { render :file_name }

【讨论】:

    【解决方案4】:

    您可以简单地使用这个 gem RABL

    https://github.com/nesquena/rabl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 2011-05-15
      相关资源
      最近更新 更多