购物网 二刷第二周进度 5.3 & 5.4
5.3
先rails g model, 然后细节去migration里面加, 也是一种方法. 就是看了教程后, 接着自己乱写如下
教程打脸版本
我估摸着, 这个
default: 1
是每按一次, 就自动添加一的"起始设定", 原来这里就设定了啊...
然后要修改cart model里的代码, 将三张表格关联起来, 因为cart里面只有cart_itmes并没有product的细节,但跟product表格还是有关系要关联起来的, 就要"通过cart_item"来关联了.
嗯, 居然不用改cart的表结构...
定义居然直接在model里面定义去了...
并不是我截图里乱写的那样, 而是要用神秘的ci大哥!!! 这次冷静的看了一遍教程代码
ci = cart_items.build
ci.product = product
ci.quantity = 1
ci.save
认真看看第一行...有所领悟, 这个ci...不是ruby语言来的, 只是这样取名而已吧?! 只是自定义了一个简写而已吧?!! 只是不想一直重复写 cart_item...所以去取名的咩?!! 所以其实我要认真查的反而应该是 "build" 这个才是ruby语言来的吧?!
但是我比较在意的是为什么...ci = cart_items.build
用的是复数的cart_items
? 啊...莫非因为cart里面有无限多的cart_items...所以此处不能用单数?!
5.4
一开始就打脸昨天乱写的navbar代码...我想到用link_to do来写, 估计只有这一部分是对的...Orz 昨天手生, 今天再乱写一次, 坐等教程打脸
这脸打的...根本没quantity啥事...Orz
唉...截图里点评的我还是太天真...误解了...人家current_cart压根不是内建的代码来的, 要自己去定义, 且不是我寻思的那样要创建一个cart controller去定义... 人家教程直接杀去"全局controller"定义去了.
总之, 前端view代码先这样写了, 但其实其中的current_cart还没有定义, 它是个controller里的method来的, 而且是个helper_method
. 作为helper_method要说明自己的身份后才能在view以及controller两个地方都被调用...