Ruby on rails 向SpreeCommerce添加新功能

Ruby on rails 向SpreeCommerce添加新功能,ruby-on-rails,spree,Ruby On Rails,Spree,我正计划推出一个网站,作为一种快递服务,客户要求我的公司从另一个国家找到一种在他们国家不可用的特定产品(例如动作图) Spreecommerce(包括一些扩展)提供了我需要的几乎所有功能 购物车,支付系统,CMS,开放认证,评论系统 还有一个重要的功能,那就是查询系统。使用此系统,客户可以请求他们想要的特定产品 他们将使用的表格将包含以下信息: 名称描述 价格(可选) 条形码(可选) 类别(使用与产品相同的分类系统) 数量 图像 评论(使用spree contrib/spree_评论) 我的

我正计划推出一个网站,作为一种快递服务,客户要求我的公司从另一个国家找到一种在他们国家不可用的特定产品(例如动作图)

Spreecommerce(包括一些扩展)提供了我需要的几乎所有功能

购物车,支付系统,CMS,开放认证,评论系统

还有一个重要的功能,那就是查询系统。使用此系统,客户可以请求他们想要的特定产品

他们将使用的表格将包含以下信息:

  • 名称描述
  • 价格(可选)
  • 条形码(可选)
  • 类别(使用与产品相同的分类系统)
  • 数量
  • 图像
  • 评论(使用spree contrib/spree_评论)
我的想法是,用户将提出将有一个表单,当提交管理员可以查看。管理员可以查看/修改查询,并使用评论系统进行回复。一旦物品被定位并确认,管理员将创建一个产品,并将其添加到用户的购物车中,用户可以使用正常的spree订单退房系统最终确定

因此,我对系统的修改是: -添加客户和管理员的查询表(管理员可以以客户的名义进行查询) -将产品私有化给订购产品的用户 -禁用用户的“产品”页面,因为每个产品对每个用户都是唯一的

我正在创建查询表单页面。我查看了SpreeCommerce文档,似乎没有关于添加新页面并将其集成到系统中的说明。文档更侧重于修改当前页面

因此,我决定查看一个实现了类似功能的项目,并模拟它所做的工作

我选择了spree contrib/spree\u static\u内容。所以我所做的是:

使用spree_products表作为指导原则创建查询迁移,包括以下信息:

  • 查询表
  • 查询\分类表(用于“类别”)
  • 查询变量表(用于“图像上传”)
在app/views/spree/admin下创建了以下视图(这些视图大多是产品视图的简化版本):

  • 查询/_form.html.erb
  • 查询/edit.html.erb
  • 查询/index.html.erb
  • 查询/new.html.erb

  • 共享/_查询_侧边栏_menu.html.erb

  • 共享/\u查询\u tabs.html.erb
要在“管理”部分中添加菜单项,请执行以下操作:

  • 应用程序/覆盖/将查询添加到管理主菜单.rb
创建了一个空的InquiriesController,该控制器继承自Admin::BaseController

创建了一个查询模型,该模型继承自Spree::Base,并松散地基于产品模型

到目前为止,我感到困惑的是:

  • 积垢是如何处理的
  • 存储的spree.admin{name}\url值在哪里

如果有任何关于如何正确创建此类功能的教程,我们也将不胜感激。

嗯,为什么不使用Spree::Product模型作为起点呢?只需将自定义属性添加到该模型/表中。我建议这样做是因为构建自己的表以及与变体和分类单元的关系似乎是在重新发明轮子

你有一个好的开始。到目前为止,您缺少的是路线

正在存储spree.admin{name}\url值吗

…如果您的控制器继承自
spree::StoreController
spree::AdminController
,则不必使用
spree.
命名空间作为路由。Spree base控制器提供了一系列有用的CRUD逻辑。在您的情况下,您需要一个routes.rb文件,该文件如下所示:

Rails.application.routes.draw do
  mount Spree::Core::Engine, :at => '/'
end

Spree::Core::Engine.add_routes do
  #public enquiries, e.g. that inherit Spree::StoreController
  get 'enquiries', :to => 'enquiries#index', :as => :enquiries
end

Spree::Core::Engine.add_routes do
  namespace :admin do
    resources :enquiries
  end
end
热提示:查看spree_脚手架宝石。它可以快速删除模型/控制器/视图/路由