SPA html / JavaScript Приложение Rails с json API BackEnd для передачи данных на фронт. Страница индекса отображается и создается полностью с JS в javascript_pack_tag. Затем я вызываю свой собственный API для json данных, сохраненных в PG, а затем в сторонний API openweathermap. Все работало так, как я хотел, затем я попытался сохранить свой ключ API openweathermap с помощью gon gem. Я был в состоянии сделать это. Однако это сломало мое приложение. Затем я отменил все gon gem, и приложение все еще не работает.
Ошибка
терминал
#ubuntu terminal
ActionController::UnknownFormat (CitiesController#index is missing a template
for this request format and variant.
request.formats: ["application/json"]
request.variant: []):
консоль
#chrome console
class_mode.js:238 GET http://localhost:3000/cities.json 406 (Not Acceptable)
fetchCityData @ class_mode.js:238
(anonymous) @ class_mode.js:9
localhost/:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
#class_mode.js
line 238> return fetch(BASE_URL).then(res => res.json()).then(function (json) {
Из этих ошибок я проследил это до действия моего контроллера, возвращающего HTML вместо JSON. В частности, <</strong> обозначает html, возвращающихся в контроллер.
Последняя попытка исправить в контроллере
def index
@all = City.all_in_json
respond_to do |format|
format.html { render :index }
format.json { @all }
end
end
Я также переместил json logi c в модель City как таковую
def self.all_in_json
@cities = self.all
@returnValue = @cities.map do |city|
if city[:name] === nil
city[:name] = city.to_name
city.save!
city
else
city
end
end
@returnValue.to_json
end
Опять же, это приложение работало отлично. Я потратил целый день на отладку и теперь обращаюсь к StackOverflow.
Я попытался создать отдельные маршруты для вызова моего запроса fetch () для получения всех записей таблицы City / пытался ответить_то.