狂欢引擎/ API安装路线

时间:2013-12-13 21:20:54

标签: spree

我正在疯狂地开始#34;定制"位置,如:

mount Spree::Core::Engine, :at => '/shop'

这适用于网站的主要部分,但管理员端的API调用得到404。

No route matches [GET] "/shop/api/orders/R373466857/shipments/H36171240358/ship.json"

我注意到API路线如下所示:

ready_api_order_shipment_path    PUT     /api/orders/:order_id/shipments/:id/ready(.:format)     spree/api/shipments#ready {:format=>"json"}
ship_api_order_shipment_path     PUT     /api/orders/:order_id/shipments/:id/ship(.:format)  spree/api/shipments#ship {:format=>"json"}
add_api_order_shipment_path  PUT     /api/orders/:order_id/shipments/:id/add(.:format)   spree/api/shipments#add {:format=>"json"}
remove_api_order_shipment_path   PUT     /api/orders/:order_id/shipments/:id/remove(.:format)    spree/api/shipments#remove {:format=>"json"}

注意缺少/shop前置相关路线。有任何想法吗?我可以在我的HTTP服务器中重定向它们,但这看起来像是一个神经质的黑客。

1 个答案:

答案 0 :(得分:1)

您的发动机正确安装。在您的佣金路线中,您应该看到如下内容:

1| Prefix Verb URI Pattern Controller#Action
2| spree  /shop Spree::Core::Engine
3|
4| Routes for Spree::Core::Engine:
5|     new_spree_user_session GET    /user/spree_user/sign_in(.:format)   spree/user_sessions#new

所有狂欢路线都安装在/ shop下面,如上面第2行所示。 Spree :: Core :: Engine部分的路由列出了相对于安装引擎的路径的路由。这有点令人困惑,但这就是rake路线的工作方式。

我认为您遇到问题是因为您尝试对仅接受 PUT 请求的路线执行 GET 请求。如果您切换HTTP请求类型,则应该正确解决问题。