Использование "ApplicationController.new.render_to_string" в приложении API Rails (config.api_only = true)

У меня есть приложение Rails 5 сборки как приложение API:

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

В одном из моих действий с контроллером мне нужно визуализировать немного html со вкусом Ruby, а затем отправить его обратно в ответ 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 со вкусом Ruby?

1 ответ

Решение

Я думаю, вы должны явно использовать базовый класс. Ваше приложение является приложением API, поэтому ваш контроллер, вероятно, наследуется от ActionController::API

ActionController::Base.new.render_to_string
Другие вопросы по тегам