Рельсы 5.2, возвращающие 406 с запросом Axios - PullRequest
0 голосов
/ 13 марта 2019

У меня есть rails API в Rails 5.2 и интерфейс в Vuejs, использующий Axios для запроса API. Когда я запрашиваю с почтальоном по маршруту

[GET] http://localhost:3000/foo

Я получил ожидаемый ответ 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

1 Ответ

1 голос
/ 13 марта 2019

Я думаю, что ваша проблема исходит от вашего взгляда, у вас есть файл с именем 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
...