【问题标题】:Rails: Render JSON after Controller action results in "missing a template for this request format and variant" errorRails:在控制器操作导致“缺少此请求格式和变体的模板”错误后渲染 JSON
【发布时间】:2021-03-18 16:33:23
【问题描述】:

我有这个简单的管理控制器,我试图在调用 #reset 操作后显示一条消息,以便在操作完成时向管理员提供反馈(因为它执行 de seed.rb 文件)

该操作执行得很好,但我无法让它显示msg,并且我在服务器日志中收到此消息:

ActionController::UnknownFormat (Api::V1::AdminController#reset is missing a template for this request format and variant.

request.formats: ["application/json"]
request.variant: []):


class Api::V1::AdminController < Api::V1::BaseController
  before_action :initialize

  def seed
    @builder.process_file
  end

  def reset
    Rails.application.load_seed do
      msg = { :status => "ok" }
      respond_to do |format|
           format.json  { render :json => msg }
         end
    end
  end

  private

  def initialize
    @builder = PaymentBuilder.new
  end
end

我做错了什么?

编辑:

我必须在控制器的类级别声明 respond_to :json 并将操作块更改为

  def reset
    Rails.application.load_seed
    msg = { :reset => "OK" }
      respond_with do |format|
        format.json  { render :json => msg }
      end
  end

现在渲染得很好。

【问题讨论】:

    标签: ruby-on-rails json view controller


    【解决方案1】:

    我猜这是因为你在块内渲染,我认为你不能那样做

    【讨论】:

    • 谢谢。我将渲染移出块并得到一个 Rails 错误,告诉我我需要在控制器的类级别定义 respond_to ,然后使用 respond_with 。我更新了 OP 以供将来参考。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    相关资源
    最近更新 更多