`
black_star
  • 浏览: 34394 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ruby on rails(10) --- 订单处理

阅读更多
   订单处理,首先要有一个订单的详细列表(包括数量,价格啥的)和一个关于个人的一些信息的一个表。因此我们创建两个模型,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框架实现的无线点餐系统项目是一个基于无线网络技术,专为餐饮行业设计的综合性信息化解决方案。此系统利用Ruby on Rails全栈式MVC框架,结合当下先进的移动互联网技术,旨在提升餐厅运营效率、优化...

    Ruby on rails开发从头来

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加简洁高效。本教程将引导你从零开始学习Ruby on Rails的开发,通过一个具体的...

    基于Ruby On Rails的在线购书系统

    《基于Ruby On Rails的在线购书系统》是一个深入探讨如何利用Ruby on Rails框架构建电子商务平台的项目。Ruby on Rails(RoR)是一个开源的Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,以Ruby编程语言为...

    无线点餐系统的服务端,使用ruby on rails框架

    Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,为开发人员提供了快速开发、简洁代码以及强大的数据库支持。 首先,让我们深入了解Ruby on Rails...

    基于Ruby On Rails的洗衣系统

    **基于Ruby On Rails的洗衣系统** Ruby On Rails(简称Rails)是一种使用Ruby语言编写的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提高开发效率,强调简洁和生产力。本项目是基于Rails构建...

    ruby on rails 实例depot

    Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率,简化Web应用开发流程。Depot是一个经典的Rails教程示例项目,它展示了如何...

    Ruby-Rails实战之B2C商城开发

    在本项目"Ruby-Rails实战之B2C商城开发"中,我们将深入探索使用Ruby on Rails这一强大的Web开发框架来构建一个完整的B2C(Business-to-Consumer)在线商城。Rails是Ruby语言的一个核心框架,以其MVC(Model-View-...

    Ruby-robinhoodonrails一个基于RubyonRails的Web仪表盘

    Ruby-on-Rails是一个非常...通过这个项目,开发者可以学习到如何构建Web应用、处理API交互、设计用户界面以及实现实时数据同步等多种技术,对于想要深入理解Ruby on Rails和Web开发的人来说,是一个极好的学习资源。

    LearningRailsDepot:学习Ruby-on-Rails-仓库项目表单教程

    《深入学习Rails Depot:Ruby-on-Rails仓库项目表单教程》 在编程世界中,Ruby on Rails(简称Rails)是一个非常流行的开源Web应用程序框架,它基于Ruby编程语言。Rails以其"Convention over Configuration"(约定...

    rails敏捷开发的购物车系统

    Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-控制器)架构和“约定优于配置”的原则而闻名。 首先,让我们了解Rails的MVC架构。模型(Model)负责处理业务逻辑和数据...

    BookStore:Ruby on Rails 中的简单书店

    【Ruby on Rails 简介】 Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率,强调“约定优于配置”(Convention Over Configuration)...

    Ruby-ROREcommerceRubyonRails电子商务平台

    Ruby on Rails(简称RoR)是一个基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码的可读性。RoR以其“约定优于配置”(Convention over Configuration)的...

    e-commerce-on-rails:一个非常简单的 Ruby on Rails 电子商务,带有活动管理员

    **Ruby on Rails 电子商务平台构建基础** Ruby on Rails(RoR)是一个基于Ruby语言的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提高开发效率和可读性。"e-commerce-on-rails"项目就是一个...

    agile-web-development-with-rails_2

    ### 敏捷Web开发与Ruby on Rails:深入解析与核心知识点 #### 一、Ruby on Rails框架概述 《敏捷Web开发与Rails》是一本关于Ruby on Rails(简称Rails)的权威指南,它不仅适合初学者快速上手,也为经验丰富的...

    rails magazine issue 3

    ### Ruby on Rails Magazine Issue 3:深度探索与实践 #### 核心知识点解析: ##### 1. Ruby on Rails 概览 《Rails Magazine》聚焦于 Ruby on Rails 的深入研究与应用,每一期都包含了该领域内专家的见解、实用...

    Ruby经典案例教程3篇.zip

    以某电商网站为例,该网站使用Ruby on Rails框架进行开发,实现了用户注册、登录、商品浏览、购物车、订单处理等一系列功能。通过Ruby on Rails的MVC架构和丰富的库支持,该网站在保证了代码质量的同时,也大大提高...

    Ruby-Granite一种Rails应用程序体系结构框架

    在Web开发领域,Ruby与Rails框架的结合,即Ruby on Rails(简称Rails),为开发者提供了高效构建动态网站的强大工具。Rails遵循“约定优于配置”(Convention Over Configuration, CoC)的原则,使得开发过程更为...

    Rails 敏捷开发实践

    本书由蔡望勤(Jesse Cai)撰写,他是一位资深的 Ruby 开发者,自2006年起便致力于 Ruby on Rails 的开发工作,同时也是中国 Rails 社区的创始人。书中不仅涵盖了 Ruby on Rails 的基础知识,还深入探讨了如何结合...

Global site tag (gtag.js) - Google Analytics