Solidus API Routes - PullRequest
       42

Solidus API Routes

0 голосов
/ 25 января 2019

Сейчас я смотрю на вид редактирования продукта в интерфейсе администратора, но каждый раз, когда я пытаюсь найти типы параметров, мой API возвращает 404. Это происходит потому, что Select2 использует следующий URL: /ecommerce/api/option_types?... (не включая фактический запрос специально), даже если мой api url должен быть на /store/api/, так как в моем файле routes.rb есть следующее: mount Spree::Core::Engine, at: '/store'

Я подтвердил, что когда я временно переключаю код на mount Spree::Core::Engine, at: '/ecommerce' в моем файле routes.rb, мои типы опций правильно отображаются в поле выбора select2.

Мое единственное предположение состоит в том, что ранее в проекте я установил двигатель оживления на /ecommerce (то есть mount Spree::Core::Engine, at: '/ecommerce'). Но с тех пор я изменил код для монтирования его на store, и после этого перезапустил сервер rails в терминале и убедился, что он обновил браузер (на случай, если где-то возникла проблема с кэшированием), но все же форма select2 идет по неверному маршруту (/ecommerce/api/option_types?...).

Я пытался копаться в исходном коде, но он очень быстро заполняется с помощью select2, его js и всего остального, хаха.

Есть предположения, как это исправить?

1 Ответ

0 голосов
/ 28 января 2019

Сначала я не смог воспроизвести проблему.Но позже я понял это.Проблема вызвана тем, что ресурсы кэшируют ресурсы ... вы можете решить эту проблему, просто удалив содержимое каталога tmp/cache/assets/.

Почему происходит проблема?Маршруты, используемые в серверной части для вызовов API JS, определены и сохранены в объекте JS Spree.routes, вы можете проверить его содержимое в консоли браузера javascript.

Префикс этих URL-адресов взят из Spree.pathFor, определенного в core/app/assets/javascripts/spree.js.erb:

Spree.mountedAt = function() {
  return "<%= Rails.application.routes.url_helpers.spree_path(trailing_slash: true) %>";
};

Хотя Rails.application.routes.url_helpers.spree_path изменяется при изменении пути монтирования Spree, этот JS-файл после его создания не изменится, поскольку его контрольная сумма MD5 остается прежней.Поэтому будет использоваться кэшированная версия в каталоге tmp/cache/assets/.

...