在 Rails api 应用程序中使用 "ApplicationController.new.render_to_string"(config.api_only = true)
Using "ApplicationController.new.render_to_string" in a Rails api app (config.api_only = true)
我有一个 Rails 5 应用构建 api app:
# config/application.rb
module MyApp
class Application < Rails::Application
config.api_only = true
end
end
在我的控制器操作之一中,我需要渲染一些 Ruby 风味的 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
似乎只是呈现 " "
。这让我感到困惑,因为我希望它要么提供内容,要么引发异常。
有什么建议我应该采取什么路线来生成 Ruby 风味的 html?
我猜你必须显式使用基数 class。您的应用程序是一个 API 应用程序,因此您的控制器可能继承自 ActionController::API
ActionController::Base.new.render_to_string
我有一个 Rails 5 应用构建 api app:
# config/application.rb
module MyApp
class Application < Rails::Application
config.api_only = true
end
end
在我的控制器操作之一中,我需要渲染一些 Ruby 风味的 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
似乎只是呈现 " "
。这让我感到困惑,因为我希望它要么提供内容,要么引发异常。
有什么建议我应该采取什么路线来生成 Ruby 风味的 html?
我猜你必须显式使用基数 class。您的应用程序是一个 API 应用程序,因此您的控制器可能继承自 ActionController::API
ActionController::Base.new.render_to_string