首页 > 解决方案 > Rails:在控制器操作导致“缺少此请求格式和变体的模板”错误后渲染 JSON

问题描述

我有这个简单的管理控制器,我试图在调用#reset 操作后显示一条消息,以便在操作完成时向管理员提供反馈(因为它执行 deseed.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-railsjsonviewcontroller

解决方案


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


推荐阅读