美文网首页
购物网 5.7

购物网 5.7

作者: RealAnalysis | 来源:发表于2019-06-11 13:10 被阅读0次

    尝试转换成代码需求

    请设计一个功能,可以一键清空购物车内所有的物品

    弄个按钮, 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

    截图有错别字, 是locate不是local啊...

    我去...我这报错被爆的心服口服...居然是因为没有相关的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而不是文本作为前端代码, 所以换了一种代码写法.

    相关文章

      网友评论

          本文标题:购物网 5.7

          本文链接:https://www.haomeiwen.com/subject/rqixfctx.html