向Spreecommerse添加新功能

时间:2015-11-16 11:12:34

标签: ruby-on-rails spree

我计划推出一个网站,作为一种快递服务,客户要求我的公司从其他国家/地区找到某个产品(例如行动人物)。

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

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

还有一个重要的功能,即查询系统。有了这个系统,客户可以要求他们想要的某些产品。

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

  • 名称说明
  • 价格(可选)
  • 条形码(可选)
  • 类别(使用与产品相同的分类系统)
  • 数量
  • 图片
  • 评论(使用 spree-contrib / spree_comments

我的想法是,用户将被呈现将有一个表单,当提交管理员可以查看。管理员可以查看/修改查询并使用评论系统进行响应。找到并确认该项目后,管理员将创建一个产品并将其添加到用户的购物车中,用户可以使用正常的狂欢订单结帐系统完成该购物车。

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

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

因此,我决定查看一个实现了类似功能的项目,并模仿它所做的事情。

我选择 spree-contrib / spree_static_content 。所以我做的是:

使用spree_products表作为指南创建查询迁移,并提供以下信息:

  • 查询表
  • enquiries_taxons表(用于“类别”)
  • enquiries_variants表(用于“图片上传”)

在app / views / spree / admin下创建了以下视图(这些视图大多是产品视图的简化版本):

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

  • 共享/ _enquiries_sidebar_menu.html.erb

  • 共享/ _enquiry_tabs.html.erb

要在管理部分添加菜单项:

  • 应用程序/重写/ add_enquiries_to_admin_main_menu.rb

创建一个空 EnquiriesController ,它继承自 Admin :: BaseController

创建了一个继承自Spree :: Base的查询模型,该模型基于Products模型。

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

  • 如何处理CRUD?
  • spree.admin_ {name} _url 值存储在哪里?

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

1 个答案:

答案 0 :(得分:1)

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

你在这里有个好的开始。你到目前为止缺少的是路线

  

spree.admin_ {name}存储了_url值?

...如果您的控制器继承自spree.Spree::StoreController,则您不一定需要使用Spree::AdminController命名空间进行路由。 Spree基本控制器提供了许多有用的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

Hottip:查看spree_scaffold gem。它使模型/控制器/视图/路线快速删除