在Rails API应用程序中使用“ApplicationController.new.render

2019-09-28 04:12发布

我有一个Rails应用程序5构建作为API的应用程序 :

# config/application.rb
module MyApp
  class Application < Rails::Application
    config.api_only = true
  end
end

在我的控制器动作之一,我需要一些呈现红宝石味的HTML,然后服务于它放回JSON响应。

一个标准的Rails应用程序做到这一点:

# app/controllers/my_controller.rb
def my_action
  html = ApplicationController.new.render_to_string("my_erb_or_haml_file", locals: {foo: "bar"}, layout: false)
  render :json => {html: html}, :status => :ok
end

但是,对于我的瘦身API的应用程序ApplicationController.new.render_to_string似乎只呈现" " 。 这混淆了我,因为我希望它无论是服务内容或引发异常。

我应该采取以产生红宝石什么路线任何建议调味HTML?

Answer 1:

我想你必须明确地使用基类。 您的应用程序是一个API的应用程序,让您的控制器可能是从继承的ActionController :: API

ActionController::Base.new.render_to_string


文章来源: Using “ApplicationController.new.render_to_string” in a Rails api app (config.api_only = true)