Ruby on rails 轨道&x2B;Vue.js axios POST获取406未知错误

Ruby on rails 轨道&x2B;Vue.js axios POST获取406未知错误,ruby-on-rails,vue.js,axios,Ruby On Rails,Vue.js,Axios,我见过同一问题的不同问题,但没有一个解决了我的错误 发布带有表单和axios的新活动记录时,我得到了406种未知格式,我无法解释原因,因为我在控制器中指定了json格式: 错误 spread.js:25 POST http://localhost:4000/campaigns 406 (Not Acceptable) <!DOCTYPE html> <html lang="en"> <head> <

我见过同一问题的不同问题,但没有一个解决了我的错误

发布带有表单和axios的新
活动
记录时,我得到了406种未知格式,我无法解释原因,因为我在控制器中指定了json格式

错误

spread.js:25 POST http://localhost:4000/campaigns 406 (Not Acceptable)

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="utf-8" />
      <title>Action Controller: Exception caught</title>


    <header>
      <h1>
        ActionController::UnknownFormat
          in CampaignsController#create
      </h1>
    </header>
活动控制器

  def create
    @campaign = Campaign.new(campaign_params)
    if current_user
      @campaign.user_id = current_user.id
    end
    respond_to do |format|
      format.json do
        if @campaign.save
          format.json { render :show, status: :ok, location: @campaign }
        else
          format.json { render json: @campaign.errors, status: :unprocessable_entity }
        end
      end
    end
  end
表格

methods: {
      submit() {
        var data = new FormData()
        data.append('box', this.campaign.selectedBox.id)
        for (const product of this.campaign.selectedProducts) {
          data.append('products[]', product.id)
        }
        data.append('image', this.campaign.photo1)
        data.append('campaign', this.campaign.id)
        axios.interceptors.request.use(config => {
          config.paramsSerializer = params =>
            qs.stringify(params, {
              arrayFormat: 'brackets',
              encode: false
            });

          return config
        })
        axios.post('/campaigns', data, {
            headers: {
                'Content-Type': 'application/json',
            }
        }).then((response) => {
          location.href = response.data.url
        }).catch((error) => {
          console.log(error.response.data)
        })
      },

我错过什么了吗?提前感谢。

以上代码使用的是Rails资源(routes.rb),没有定义默认格式和未指定格式的Axios POST请求

提交POST请求时,请检查rails服务器日志,并查看控制器如何处理该请求。我预计上面会生成一行:“由活动控制器处理#创建为HTML”

请尝试在路由文件()中定义默认格式:

或者指定POST请求的格式

axios.post('/campaigns.json', ...)...

在调用
Axios.post('/campetings')…
之前,您是否在Axios中设置了任何
Accept-*
请求头?不,我在这里发布了完整的方法,我缺少什么?406错误代码通常表示客户端正在使用一个或多个
Accept-*
头集发出请求。例如,客户端可以设置
Accept:application/xml
,但服务器无法使用适当的内容类型进行响应。您是否查看了浏览器的web检查器并验证了请求是否符合预期?这是我在响应标题中看到的:内容类型:text/html;charset=UTF-8,不应该是JSON吗?接受:application/JSON,text/plain/
defaults format: :json do
  resources :campaigns
end
axios.post('/campaigns.json', ...)...