订单处理,首先要有一个订单的详细列表(包括数量,价格啥的)和一个关于个人的一些信息的一个表。因此我们创建两个模型,line_item(列表项),order(列表),然后编辑如下
/db/migrate xxx_create_order xxx_line_item
class CreateOrders < ActiveRecord::Migration
def self.up
create_table :orders do |t|
t.string :name
t.text :address
t.string :email
t.string :pay_type, :limit => 10
t.timestamps
end
end
def self.down
drop_table :orders
end
end
class CreateLineItems < ActiveRecord::Migration
def self.up
create_table :line_items do |t|
t.integer :product_id, :null => false,:options =>
"CONSTRAINT fk_line_items_products REFERENCES products(id)"
t.integer :order_id,:null => false, :options =>
"CONSTRAINT fk_line_items_orders ReEFERENCES orders(id)"
t.integer :quantity, :null => false
t.decimal :total_price, :null => false,:precision => 8,:scale => 2
t.timestamps
end
end
def self.down
drop_table :line_items
end
end
t.integer :product_id, :null => false,:options =>
"CONSTRAINT fk_line_items_products REFERENCES products(id)"
,对product_id进行约束,其范围只能在products 表的id中选
数据库中两者的关系已经清楚,接下来在rails中建立关系
class Order < ActiveRecord::Base
has_many :line_items #包含子集
class LineItem < ActiveRecord::Base
belongs_to :order #有外键就用belogns_to,表示LineItem是这两者的
belongs_to :product #子集,只有父存在,只才存在。
这样三者就可以相互引用。
放置一个checkout 按钮,然后定义其方法
<%=button_to "Checkout",:action => :checkout%> ----_cart.html.erb
/app/controller/store_controller.rb
def checkout
@cart = find_cart
if @cart.items.empty?
rediret_to_index("Your cart is empty")
else
@order = Order.new
end
end
#如果购物车里有东西,则生成一个订单
关联数据
form_for 可以使view 通过controller中与model对应的数据,这样分析对么
<div id="depot-form">
<%= error_messages_for "order"%>
<fieldset>
<legend>Please Enter Your Details</legend>
<%form_for :order, :url => {:action => :save_order} do |f|%>
<p>
<%=label :order,:name,"Name:"%>
<%= f.text_field :name,:size => 40%>
</p>
<p>
<%= label :order,:pay_type, "Pay_with:"%>
<%= f.select :pay_type, Order::PAYMENT_TYPES,
:promt => "Select a payment type"
%>
</p>
<%= submit_tag "Place Order",:class => "submit" %>
<%end%>
</fieldset>
</div>
#:order 对应controller中的@order,而下面的参数如name取得则是model里面的
困了,后面就贴代码
/model/order
PAYMENT_TYPES = [
#Display Store in db
["Check","check"],
["Credit Cart","cc"],
["Purchase Order","po"]
]
validates_presence_of :name,:address,:email,:pay_type
validates_inclusion_of :pay_type,:in => PAYMENT_TYPES.map{|dispay,value|value}
store_controller
def save_order
@cart = find_cart
@order = Order.new(params[:order])
@order.add_line_items_from_cart(@cart)
if @order.save #save哪里来的
session[:cart] = nil
redirect_to_index("Thank you for your order")
else
render :action => :checkout
end
end
order.rb
def add_line_items_from_cart(cart)
cart.items.each do |item|
li = LineItem.from_cart_item(item)
line_items << li
end
end
line_items << li因为用到上面的has_many
/models/line_items.rb
def self.from_cart_item(cart_item)
li = self.new
li.product = cart_item.product
li.quantity = cart_item.quantity
li.total_price = cart_item.price
li
end
时间不早了,11.36了,洗洗睡吧
- 大小: 12.6 KB
- 大小: 15.7 KB
- 大小: 5.6 KB
分享到:
相关推荐
后端是Ruby on Rails和PostgreSQL。依存关系Rails 4.2 PostgreSQL 9.x 条纹丛林特色用户认证使用Rails的bcrypt实现注册/登录。管理员权限经过身份验证的管理员可以添加/编辑/删除产品和类别。产品选型用户可以直接...
科技栈前端: ERB 后端: Ruby on Rails PostgreSQL测试: 规范水豚Poltergeist 创建于Lighthouse Labs网络开发新手训练营的第9周和第10周。演练客户可以将产品添加到他们的购物车中。客户在确认订单之前检查他们的...
ROR电子商务项目概述如果有问题,请在github上创建票证。 他们将尽快解决。 请查看主页以获取更多详细信息。...该解决方案包括采购订单,产品创建,发货,履行和创建订单的管理员。 最少的客户满意度
功能:可配置的税收方式,运输方式,付款方式一页结帐,使用AJAX进行运输和税收计算交易中完成订单处理,最大程度地减少了孤立的数据完全定义的后端RailsAdmin界面,用于在后端Piggybak 0.7.1上添加订单Rails ...
Medical_Testing_Web_App •用Ruby-On-Rails设计了一个基于MVC的Web应用程序,用于在医学测试机构中实施自动化订单管理和报告生成系统。 通过MySQL实现了系统的后端数据库功能。 •通过利用Angular JS对系统进行设计...
当处理用户订单而不是电子书时,这是您必须处理的事情。 在这种情况下,我们将建立一个典型的结帐流程的前三个步骤,用于预订单程航班: 典型的航空公司预订流程: 输入所需的日期/机场,然后单击“搜索” 从...
购物车 基本功能: 管理员用户登录/注册 CRUD 产品和订单 访客用户可以添加/删除产品到购物车和结帐下订单 邮寄者发送订单确认和发货确认
本地数据库创建订单表。 建议包含以下字段,参考官方API( https://pingxx.com/document/api#api-c-new): order_no:required 商户订单号,适配每个渠道对此参数的要求,必须在商户系统内唯一。 alipay: 1-64 ...
由于这个项目,我了解了有关Ruby on Rails,模型-视图-控制器范例,嵌入式Ruby和测试(TDD和BDD)的更多信息。笔记: 已知问题:来宾(未经身份验证)用户仍然可以下订单。 下一步,应禁用此选项。主页管理员类别...
用户可以将商品添加到购物车中并提交订单。 管理员能够添加/删除/编辑类别和产品。 丛林应用程序已通过Poltergeis和Capybara进行了测试。设置运行bundle install以安装依赖项创建config/database.yml复制config/...
后端开发通常使用服务器端编程语言(如Java、Python、Ruby等)和框架(如Spring、Django、Ruby on Rails等)来实现。 后端开发的主要职责包括: 数据处理和存储:后端开发人员负责设计和管理数据库,处理数据的增...
在DevBootcamp Hackathon的两天内,我们构建了这个Ruby on Rails应用程序。 除了Ruby on Rails之外,我们还使用了带Google OAuth的Firebase进行身份验证,一个PostgreSQL数据库和前端上的Javascript,以及jQuery,...
现场伯爵:使用的技术前端: React.js JavaScript CSS组件智威汤逊后端: Ruby on Rails PostgresQL 智威汤逊BCrypt特性与功能模式rails生成支架以为用户,物料,CartItem,OrderItem和订单创建表,模型和控制器参考...
html、css、jquery、javascript、bootstrap、把手、主干、json、ajax、stripe api、ruby on rails api 前端部署到 GitHub Pages: : 部署到 Heroku 的后端 API 服务器: : 客户要求 菜单必须在网站上可见 鲍勃的...
自述 此自述文件用于构建在 Ruby on Rails 上的 Magento API 包装器,用于将 Rails 应用程序连接到 Magento API 涵盖的内容有: 上市产品列出单个产品信息上市股票数据列出客户上市订单创建/更新产品向产品添加媒体...
TomDoc 测试:RSpec 监控方式配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明 开源电子商务平台的比较大礼包语言:Ruby 框架:Ruby on Rails(MVC) Magento 语言:...
主要特点产品页面显示要购买的产品显示产品状态徽章使用Bcrypt的用户身份验证用户可以将产品添加到购物车我的购物车显示您购物车中的物品清单...(使用条纹)显示消息的验证和错误处理付款成功后的订单详细信息页面...
活动记录可排序 gem 允许您将与 Ruby on Rails 应用程序中的模型集成:例如,您将能够创建管理页面以使用拖放操作来安排一些项目。这个怎么运作订单保持使用整数列的值,默认position 。 要按顺序检索实例,默认情况...
艺术场景-狂欢 内容 建立和管理产品库存-了解Spree ::产品模型 数据重组:匹配Spree模式 如何? 使用数据移位 Datashift的替代品 ... 框架:Ruby on Rails(MVC) Magento 语言:PHP 框架:Zend OpenCa