我在Rails 5.2中有一个Rails API,在Vuejs中有一个前端,使用Axios来请求API。 当我在路线上要求邮递员
我得到了预期的JSON响应。
但是当我向Axios请求时:
import axios from 'axios'
export default {
getAll () {
return axios.get('http://localhost:3000/foo', {
headers: { 'Content-Type': 'application/json' }
})
}
}
我从服务器收到此响应:
CleanwalksController#index缺少此请求格式和变体的模板。 request.formats:[“ text / html”] request.variant:[]
我有以下config / cors.rb:
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
当我尝试直接访问 http://localhost:3000/foo 时,我遇到了同样的问题。
这是我的控制器:
class FooController < ApplicationController
def index
@foo = foo.all
end
end
答案 0 :(得分:1)
我认为您的问题出在您的观点上,您是否有一个名为index.html.erb的文件。否则,您可以定义多种响应格式,如下所示:
class FooController < ApplicationController
def index
@foo = foo.all
respond_to do |format|
format.html { render :index }
format.json { render json: @foo, status: 200 }
end
end
end
答案 1 :(得分:0)
我遇到了完全相同的问题。在我的规格和邮递员中,一切工作都很好,但是由于某种原因,我得到了带有vue / axios的406。
拉长头发后,我在路线文件中发现了一个错字:
namespace :v1, default: { format: :json } do
它应该是默认值(复数)
namespace :v1, defaults: { format: :json } do