Ruby on rails 轨道&x2B;Vue.js axios POST获取406未知错误
我见过同一问题的不同问题,但没有一个解决了我的错误 发布带有表单和axios的新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> <
活动
记录时,我得到了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', ...)...