尝试转换成代码需求
请设计一个功能,可以一键清空购物车内所有的物品
弄个按钮, method是delete而且是delete all那种...估计要去controller里面定义个action叫delete_all之类的? 再弄个相应的routes应该可以动.
某样东西突然不想买了,我可以在购物车内删除它
购物车清单的那页, 每个商品后面加个delete的按钮就可以实现了.
已经加入购物车的物品,不能重复被加入
我理解成 『相同商品可以本人的quantity变多, 但此商品不能重复多次出现在购物车list里面』如果是这样, 就是添加相同商品时, 只能导流到『数量变多』,而不是list上多一条相同商品...嗯...是如何实现这限制呢...
可以更改购物车内购买的数量( 原本预设数量都是1)
添加一对按钮, 用"增多"以及"减少"就能搞定吧? 估计是用上自定义的route? Rails第一课的加分题貌似就玩过. 好好回忆一下! 还有个"初始值"的要求...
库存为 0 的货品不能购买
在add_product_to_cart的定义里面加一行代码, 设定" quantity != 0 " 这样应该能成.
在购物车新增数量时,不能更新超过原有库存的数量
这是在model里面添加一个validates吗? 还是在add_product_to_cart的定义里面设定" <= quantity"?
那么实作一下吧
请设计一个功能,可以一键清空购物车内所有的物品
从view的代码开始思考. 在购物车页面添加一个"一键删除"的按钮. 然后要搞定routes...嗯...用后台金手指肯定能delete_all的...但是不是rails console这后台的话,代码要写前台哪里? 怎么写?
-
Controller
不管了, 先去controller定义一个delete all试看看, 先去检查有哪些model. 推断要删掉整个cart里面的商品要先定位到user, 不能把全部cart商品删掉(有其他user的cart数据也在, 不能动别人的吖)所以我这样玩
自己也觉得不对劲...继续改改...
那就继续改改
感觉应该用session? 有session的代码locate会更准一些? 而且controller里面这样定义的话, 前端代码要怎么写啊? 不是routes啊...
-
Routes
那来写个自定义的routes用. 相对member, 记得有个collection来着, 能整锅端掉.
嗯, 一运行就报错了...routes写错哈哈哈哈
就立马去看了教程, 发现我特么思路居然是对的!!! 吓到我自己了!!!! 我要嘚瑟了我!!!!!
居然真的是用到collection, 但是我拼写错误了尼玛哈哈哈哈
诶!!! 等等, 如果routes有这样的功能, 那就不用在controller里定义了, 前端view能直接用routes写代码了呀! 去试试!!!
嗯, 运行了一下, 果然还是要去controller定义来着哈哈哈哈 要定义clean哈哈哈哈 尼玛原来clean不是内建代码, 最后还是像之前的publish/hide一样是自己起的名字啊喂! 所以最后我自己乱写的delete: :delete_all
这句, 仅仅错一个地方, 就是delete后面不用加一个":"符号!!!delete :delete_all
就是对的! 只要去controller定义了就是对的! 妈呀!!! 根据报错改就行了!
-
前端view代码
嗯嗯, 挺满意, 前端的代码也写对了, 除了小细节, 漏掉了data的部分哈哈哈
-
最后修改
问题就出在controller啦~原来根本不用我那样写, 不用locate用户...也不用找session... 简单的就成...而且不是delete.all
或是delete_all
而是destroy_all
啊!对啊!内建的可不是destroy吗?!
然后我的大致思路是对的, 的确有cart_items, 虽然被优化到model去定义了, 但思路对了! 恭喜自己!!! 我去, 我真的进步好大啊! 能挣扎着写出新功能代码的大致方向了!!!
某样东西突然不想买了,我可以在购物车内删除它
就是加个按键的事情, 就去搞定了, 没想到报错了...Orz
我去...我这报错被爆的心服口服...居然是因为没有相关的controller以及routes...注意观察目前为止routes里面只有cart相关的path们...压根没有cart_item相关的啊! 这两名字相近, 但他们完全不是一回事!!! 他们是两张独立的表格! 独立model们来的!!!
-
Controller
最惊吓是cart_item居然还没有自己的controller, 那怎么可能做任何的"删除"操作啊喂! 还以为只是加个前端的按钮, 没想到后端都没有架构起来 😂
开开心心去写了个controller的定义, 然后报错...所以...
应该不会呀, 尝试改一下把find(params[:id])
里的id
改成 product_id
说不定可行? 嗯, 不行...
原来我一开始就locate的太细了...要通过cart才能再到cart_item...
用到了find_by, 而且要说明product的由来...妈呀...好多细节遗漏...
最后也有个厉害的写法, 提醒文本里面能调用数据...用的是#{@product.title}
这样的写法. 学习了!!!
-
前端代码也不是我的写法
因为希望调用icon而不是文本作为前端代码, 所以换了一种代码写法.