4-2 Ajax练习题,12结算!Check Out。

练习题:在购物车的每个商品旁添加按钮,按一下减一个,数量为0删除该商品。先用普通方法再用Ajax支持。

1.自定义方法decrease, 为其设定路径routes.rb。 在resouurces :line_items的块中加put 'decrease', on: :member 

2.在controller中定义这个方法。

 

  • 注意⚠️:因为要用到render @cart渲染首页侧边栏,所以需要在action中声明实例变量@cart. 这里有前期模块CurrentCart中的方法set_cart,通过before_action,使用set_cart.
  • 减到一本时要用destroy方法。
  • respond_to 块中加 format.js
3. view模版中定义一个decrease.js.erb。用jquery: $('#cart').html("<%= j render(@cart) %>");

 12 chapter 

12.1 Capturing an Order

 rails generate scaffold Order name address:text email pay_type:integer.

解释: 默认是string类型。

 

 rails generate migration add_order_to_line_item order:references

解释:调用add_reference(table_name, ref_name, **options)方法。相当于add_reference(:line_items, :order, {:foreign_key=>true}) 

默认数据类型:integer. 可以改其他类型用  type: XXX 


使用ActiveRecord::Enum类声明一个pay_type属性, Rails 帮助我们完成跟踪工作。

Declare an enum attribute where the values map to integers in the database, but can be queried by name. 

 

class Order < ApplicationRecord
  enum pay_type: {
    "Check" => 0,
    "Credit Card" => 1,
    "Purchase order" => 2,
  }
end

 


 打开数据库:

depot> sqlite -line db/development.sqlite3 

 关闭:

depot> .quit

 

posted @ 2018-04-02 17:18  Mr-chen  阅读(140)  评论(0编辑  收藏  举报