快速业务通道

Ruby on rails开发从头来(windows)(十一)-订单(Order) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Ruby on rails开发从头来(windows)(十一)-订单(Order)

时间:2011-12-02 博客园 Cure

在上次的内容里,我们实现了清空购物车和金额的格式化处理。这次实现订单的模块。

1.首先,我们要在数据库里创建Order表,创建表的Sql如下:

create table orders (
id int not null auto_increment,
name varchar(100) not null,
email varchar(255) not null,
address text not null,
pay_type char(10) not null,
primary key (id)
);

我们还要重新创建line_item表,下面是Sql:

create table line_items (
id int not null auto_increment,
product_id int not null,
order_id int not null,
quantity int not null default 0,
unit_price decimal(10,2) not null,
constraint fk_items_product foreign key (product_id) references products(id),
constraint fk_items_order foreign key (order_id) references orders(id),
primary key (id)
);

在InstantRail里,可以使用phpMyAdmin来执行Sql。

运行命令行,生成Order的Model,如图:

Ruby on rails开发从头来(windows)(十一)-订单(Order) - 编程入门网

Ruby on rails开发从头来(windows)(十一)-订单(Order)(2)

时间:2011-12-02 博客园 Cure

1.下面要修改rails_apps\depot\app\models目录下的order.rb和line_item.rb文件:

class Order < ActiveRecord::Base
has_many :line_items
PAYMENT_TYPES = [
[ "Check", "check" ],
[ "Credit Card", "cc" ],
[ "Purchase Order", "po" ]
].freeze
end
class LineItem < ActiveRecord::Base
belongs_to :product
belongs_to :order
def self.for_product(product) self.new
 item = self.new
 item.quantity = 1
 item.product = product
 item.unit_price = product.price
 item
end
end

可以看出,上面的修改其实就是给Order和LineItem之间添加了主从关系。

2.给store_controller添加代码:

def checkout
@cart = find_cart
@items = @cart.items
if @items.empty?
redirect_to_index("There''s nothing in your cart!")
else
@order = Order.new
end
end

3.现在Model和Controller都有了,下面要作什么已经很明显了,当然是添加一个View了,在rails_apps\depot\app\views\store目录下创建checkout.rhtml文件,内容为:

<% @page_title = "Checkout" -%>
<%= start_form_tag(:action => "save_order") %>
  <table>
      <tr>
      <td>Name:</td>
      <td><%= text_field("order", "name", "size" => 40 ) %></td>
      </tr>
      <tr>
          <td>EMail:</td>
          <td><%= text_field("order", "email", "size" => 40 ) %></td>
      </tr>
      <tr valign="top">
          <td>Address:</td>
          <td><%= text_area("order", "address", "cols" => 40, "rows" => 5) %></td>
      </tr>
      <tr>
          <td>Pay using:</td>
          <td><%=
              options = [["Select a payment option", ""]] + Order::PAYMENT_TYPES
  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号