Solidus API 航线
Solidus API Routes
现在我正在查看管理界面中的编辑产品视图,但每次我尝试查找选项类型时,我的 api returns 都是 404。这似乎是因为 Select2 正在点击以下 url: /ecommerce/api/option_types?...
(故意不包括实际查询),即使我的 api url 应该在 /store/api/
因为我在我的 routes.rb
文件中包含以下内容:mount Spree::Core::Engine, at: '/store'
我确认当我在 routes.rb
文件中临时将代码切换为 mount Spree::Core::Engine, at: '/ecommerce'
时,我的选项类型正确显示在 select2 select 框中。
我唯一的猜测是,在项目的早期,我在 /ecommerce
(即 mount Spree::Core::Engine, at: '/ecommerce'
)安装了 spree 引擎。但是我已经更改代码以将其安装在 store
,然后在终端中重新启动 rails 服务器并确保硬刷新浏览器(以防某处出现缓存问题) ,但 select2 表格仍然走错了路线 (/ecommerce/api/option_types?...
)。
我尝试深入挖掘源代码,但是使用 select2 及其 js 和其他所有东西,它变得非常密集非常快,哈哈。
关于如何解决这个问题的任何猜测?
起初我无法重现这个问题。但是后来我想通了。该问题是由 rails 缓存资产引起的...您只需删除 tmp/cache/assets/
目录的内容即可解决此问题。
为什么会出现这个问题?用于 JS API 调用的后端路由定义并存储在 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/
目录中的缓存版本。
现在我正在查看管理界面中的编辑产品视图,但每次我尝试查找选项类型时,我的 api returns 都是 404。这似乎是因为 Select2 正在点击以下 url: /ecommerce/api/option_types?...
(故意不包括实际查询),即使我的 api url 应该在 /store/api/
因为我在我的 routes.rb
文件中包含以下内容:mount Spree::Core::Engine, at: '/store'
我确认当我在 routes.rb
文件中临时将代码切换为 mount Spree::Core::Engine, at: '/ecommerce'
时,我的选项类型正确显示在 select2 select 框中。
我唯一的猜测是,在项目的早期,我在 /ecommerce
(即 mount Spree::Core::Engine, at: '/ecommerce'
)安装了 spree 引擎。但是我已经更改代码以将其安装在 store
,然后在终端中重新启动 rails 服务器并确保硬刷新浏览器(以防某处出现缓存问题) ,但 select2 表格仍然走错了路线 (/ecommerce/api/option_types?...
)。
我尝试深入挖掘源代码,但是使用 select2 及其 js 和其他所有东西,它变得非常密集非常快,哈哈。
关于如何解决这个问题的任何猜测?
起初我无法重现这个问题。但是后来我想通了。该问题是由 rails 缓存资产引起的...您只需删除 tmp/cache/assets/
目录的内容即可解决此问题。
为什么会出现这个问题?用于 JS API 调用的后端路由定义并存储在 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/
目录中的缓存版本。