订单处理,首先要有一个订单的详细列表(包括数量,价格啥的)和一个关于个人的一些信息的一个表。因此我们创建两个模型,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框架实现的无线点餐系统项目是一个基于无线网络技术,专为餐饮行业设计的综合性信息化解决方案。此系统利用Ruby on Rails全栈式MVC框架,结合当下先进的移动互联网技术,旨在提升餐厅运营效率、优化...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加简洁高效。本教程将引导你从零开始学习Ruby on Rails的开发,通过一个具体的...
《基于Ruby On Rails的在线购书系统》是一个深入探讨如何利用Ruby on Rails框架构建电子商务平台的项目。Ruby on Rails(RoR)是一个开源的Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,以Ruby编程语言为...
Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,为开发人员提供了快速开发、简洁代码以及强大的数据库支持。 首先,让我们深入了解Ruby on Rails...
**基于Ruby On Rails的洗衣系统** Ruby On Rails(简称Rails)是一种使用Ruby语言编写的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提高开发效率,强调简洁和生产力。本项目是基于Rails构建...
Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率,简化Web应用开发流程。Depot是一个经典的Rails教程示例项目,它展示了如何...
在本项目"Ruby-Rails实战之B2C商城开发"中,我们将深入探索使用Ruby on Rails这一强大的Web开发框架来构建一个完整的B2C(Business-to-Consumer)在线商城。Rails是Ruby语言的一个核心框架,以其MVC(Model-View-...
Ruby-on-Rails是一个非常...通过这个项目,开发者可以学习到如何构建Web应用、处理API交互、设计用户界面以及实现实时数据同步等多种技术,对于想要深入理解Ruby on Rails和Web开发的人来说,是一个极好的学习资源。
《深入学习Rails Depot:Ruby-on-Rails仓库项目表单教程》 在编程世界中,Ruby on Rails(简称Rails)是一个非常流行的开源Web应用程序框架,它基于Ruby编程语言。Rails以其"Convention over Configuration"(约定...
Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-控制器)架构和“约定优于配置”的原则而闻名。 首先,让我们了解Rails的MVC架构。模型(Model)负责处理业务逻辑和数据...
【Ruby on Rails 简介】 Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率,强调“约定优于配置”(Convention Over Configuration)...
Ruby on Rails(简称RoR)是一个基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码的可读性。RoR以其“约定优于配置”(Convention over Configuration)的...
**Ruby on Rails 电子商务平台构建基础** Ruby on Rails(RoR)是一个基于Ruby语言的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提高开发效率和可读性。"e-commerce-on-rails"项目就是一个...
### 敏捷Web开发与Ruby on Rails:深入解析与核心知识点 #### 一、Ruby on Rails框架概述 《敏捷Web开发与Rails》是一本关于Ruby on Rails(简称Rails)的权威指南,它不仅适合初学者快速上手,也为经验丰富的...
### Ruby on Rails Magazine Issue 3:深度探索与实践 #### 核心知识点解析: ##### 1. Ruby on Rails 概览 《Rails Magazine》聚焦于 Ruby on Rails 的深入研究与应用,每一期都包含了该领域内专家的见解、实用...
以某电商网站为例,该网站使用Ruby on Rails框架进行开发,实现了用户注册、登录、商品浏览、购物车、订单处理等一系列功能。通过Ruby on Rails的MVC架构和丰富的库支持,该网站在保证了代码质量的同时,也大大提高...
在Web开发领域,Ruby与Rails框架的结合,即Ruby on Rails(简称Rails),为开发者提供了高效构建动态网站的强大工具。Rails遵循“约定优于配置”(Convention Over Configuration, CoC)的原则,使得开发过程更为...
本书由蔡望勤(Jesse Cai)撰写,他是一位资深的 Ruby 开发者,自2006年起便致力于 Ruby on Rails 的开发工作,同时也是中国 Rails 社区的创始人。书中不仅涵盖了 Ruby on Rails 的基础知识,还深入探讨了如何结合...