招聘网 三刷超精彩错误集
目标是一天内通关一次. 毕竟YY助教提过, 招聘网做快一些大概三四个小时能完成到教程step8程度, 就是没有去搞前端进一步的细化设计. 所以一天内搞定一次应该没问题! 加油!
首先, 出现了诡异的错误, 没报错画面...or at least not yet...
在写Job的CRUD的时候, routes加了之后, 我开始写index页面, 查到的path居然是个复数的? 这啥啊?
跑去routes看看
问题出在routes的写法错误...妈耶, 各种地方出bug啊哈哈哈
一个迟来的领悟哈哈哈哈哈
所以这个情况下job前面不会加@...写了index代码后, 后台添加一笔数据试看看效果, 然后发现一个奇葩
真的诡异, 把这条删掉的话, 页面会显示一对 "[ ]" ...Orz 大哥你谁啊?!!!
必须是代码有误, 多了一堆显示, 把金手指的代码显示出来了居然! 什么鬼! 然后对比教程发现...Orz
去掉这个多余的 "=" 就没事了...妈耶...所以之前是simple_form的代码所以要加显示的"="?
还发现一个不会有报错页面的bug...写了后台的新建new相关代码后, 尝试添加一笔数据试试看. 完全自己写, 没对比教程哦. 然后发现一个情况, 提交成功, 一切都OK, 就是会自动跳转到"前台的index"...
我把后台的键钮设定成蓝色, 所以发现异常, 然后开始观察网址, 发现的确如此!! 不管是new还是edit, 提交后都跳转到前台index, 但是我去查看controller代码, 的确都是写"跳转到后台index"没错啊!
那么推测view代码有问题, 就去看后台index的代码, 没问题啊...再查看new的view代码...哦...发现问题...
我去! 原来这个地方写错, 会是这样的效果啊! 无视controller里的代码设定, 自己跳去前台index...也太强了吧...
都是老错误重新犯错耶...果然要自己写一遍才印象深刻啊! 不过错到这程度, 我感觉领悟的更多了, 老师说的对啊...多练习真的莫名其妙很多东西都能自己搞懂了...
还有一个迟来的领悟, 妈呀, 不看教程甚至不看教程提示全自己写的时候, 居然能有这样多的感悟?! 还是累积次数终于够多了, 开始量变转质变了?
有领悟的是, require_is_admin这限制条件, 其实他跟 before_action :authenticate_user 是完全一个道理啊!
都是"不满足这个条件, 就无法用此界面定义的功能"的意思, 所以当初第一遍自己想办法时为啥会一直没注意到这点啊, 应该很自然就想到before_action去啊...
而且这也是为什么, 很自然的会在controller里的new/edit/create等等一众放一个地方定义require_is_admin 而且不是放在"private"底下, 因为他们本来就是同理同类啊! 回答了我第一遍做时的困惑啊!
而且他们都是, "如果不满足此条件, 不能用此界面定义的功能, 且要被跳转到某个指定页面"的路数! 妈呀, 难怪连定义的内容都一个路数...这样一抽象出来梳理理解...背后的套路简直一模一样, 他们简直就是...双胞胎一样的存在啊我去!!!
领悟后, 开开心心写require_is_admin定义, 一开始ok. 开始尝试移到model去优化代码的时候, 开始报错...
一脸困惑...对比教程, 发现我又跑去job model定义了...我去!!! 大哥啊你看啊! 用眼睛看啊!!! 我们都用current_user来定义了, 能是job model吗? 都user了当然要去user model搞定了喂!!!
看看报错页面大大的JobsController我就闹心 😂
开开心心改到user.rb里面定义后, 却又开始报错...
去看看user model的定义又出什么幺儿子啊...
嗯?!! 我尝试改成 job.current_user.email = XXX 也不行...嗯...undefined local variable or method...我不是给定义了吗...然后对比教程...我去!!! 报错讲的没错...真的是undefined...因为...我用的是"=" 应该要用 " == " 的啊啊啊啊啊!!!! 定义用双等号啊!
再瞄一眼教程...唉...这下改对了...又是老错误...Orz
然后一直到8.1加分题都做的很顺利, 偶遇bug也都能一分钟内解决... 好爽啊这顺滑的感觉~
然后做到加分题最后一步, 就报错了哈哈哈 在controller里面定义了publish/hide动作是啥, 然后报错
认真一看...莫非是因为改了routes忘记重启server? 试看看 rails server...嗯, 没有解决...为了晚上能跟妹纸去吃炉端烧, 不纠结太久, 直接对比教程吧.
加上了缺失的部分, 还是没有解决bug, 继续...
继续对比...发现果然是一开始怀疑的controller写错了...你都没locate到此条job...如何对其publish/hide啊喂!!! 真是最基本的思路啊啊啊啊!!! 而且...我居然写错地方了...跑去"前台controller"一通写...这里需要"在后台显示"要去"后台的controller"写啊啊啊! 全部是细节, 别太着急不管质量啊! 会错误不断的!
最后...hidden要false才能publish...就是我true/false设定反了 Orz 真的是一堆稍微注意就能避开的错误...
因写的太快, 赶时间, 就没有进一步测试一下, 没提交, 所以很多没有报错画面...但是controller定义写错了
@resume = Resume.new(resume_params)才对, 而且下面的job_path(@job)才成, 不然只是限制在本界面中去弄数据, 但其实要调用到Job的数据的, 限制在本界面只能调resume的数据, 无法"跨界"去job的! 要加@
如果不改, 直接测验一下
然后只改resume的那行, 继续运行, 新的报错出现, 其实按照报错指示也能完全自己不看教程改好哈哈哈哈
最后, 加分题...研究其对数据的需求, 推测model肯定不用新建, 但如何建controller啊...已有跟前台Jobs同层级的resume controller抓数. 那么这负责后台的resume的抓数, 就需要建一个跟后台jobs同层级的resume controller~ 嗯, admin平行世界里抓数据的resume controller 这波推测可以, 动手写!
不对...要抓取的是job旗下的resume, 所以routes来说resumes不是跟jobs平级, 而是jobs旗下层级的resumes...至少routes是jobs旗下层级的?
然后定义resume的controller也要admin平行世界的样式才对, 要把平行世界的限制条件都搬过去哈哈哈哈
我居然这次都猜测正确了! 恭喜! 当然最后的index html还是看了教程, 不过html写的思路我大概懂. 恭喜自己三刷闯关成功哈哈哈!!!