【笔记code】招聘网站004

Published on:

本次练习

招聘框架目的:用时过长,加强训练【用时6h,1.5h问问题】

心得:速度上不去的一大原因是views的代码照打,发现这样是在练习打字,更重要的是观察做功能的思路,听到要完成什么功能,就会条件反射的知道要去哪些模块执行动作。

遇到的bug:
招聘网站6-2章 NoMethodError in Admin::Jobs#index打错字
8-2的bug跟做招聘003一样遇到, 发现是教材8-2step5代码有问题

准备工作

15-15.5

6-0 前端初始化

15.5-16.5

Q.在helper中定义def是前端用的,后端用的在model中定义?

A.Model是用来更数据库打交道的,是在Controller中调用的,Helper是Viewer中拿来用的。初步看起来你这个总结是对的。

Q.git commit后发现左漏或做错,再次保存要怎么输入标记

  • 【心得】flash色块不显示,排查发现少了<%=的=。→debug除了拼写,还要看符号
  • 【小结】devise,rails g, 增加_navbar注册登录,加js的dropdown

6-1 招聘网站第一部分

16.5-17

Q.views里有时用:method => :delete,有时用method: :delete,那么是不是: xxx =>和:的意思一样(至少debug的时候这些是成对的)?

A.那两种方式意思一样,都可以。

6-2 招聘网站第二部分

17-17.5,问题slack
17.5-19bug

Q.admin_job的controller里没有重新增加title和description栏位(即rails g model title:string description:text),是不是意味着增加的栏位每个controller都可以调用?

A.没错,不管是admin下面的jobs_controller 还是controllers目录下面的,打交道的数据都是同一个job model,因为普通用户和管理员都是对同一个job相关的信息进行操作的。

Q.rails g migration的数据也属于job model吗?或是说,如果我拿新建的admin的controller去调用6-3创建的那些栏位(wage_lower_bound/wage_upper_bound/contact_email)也是可以的?

A.整理自己的理解:"看atom的架构图,model里没有admin_job.rb,因为前后台都是用job.rb,而写进db:migrate的数据因为是add_more_detail_to_job,涉及到job,所以model调用的时候是在job中执行,所以db里的数据相当于是在model/job里。"是的,你这样理解基本是对的。那个后面的to_job,job代表的就是model。所谓的rails 约定优于配置,to_job就是其中的一个例子。

Q.【问题】application_controller的def可以给别人调用,那什么时候放这里,什么时候放model?

6-3 招聘网站第三部分

21-22,slack请教debug

6-4 招聘网站第四部分

22-22.5

Q.发现能否隐藏只和boolean值的true还是false有关,而与is_hidden无关?

A.is_hidden是数据库的资料,不管定义了true还是false都是属性(比如规定18以上是成年人,那这个值就分成成年人和未成年人,是静态的),所以is_hidden可以任意命名,定这个名字只是用于使用者区分。而controller决定游戏动作 (比如成年人站左边),Group.where(:is_hidden => true)。目前可以理解到的是动作决定对db里状态的定义,db的值并不决定隐藏还是不隐藏,而是由Group.where(:is_hidden => true)决定的,index里定义是true那就表示true的值不隐藏,如果定义是false就表示false的值不隐藏。

8-2 招聘网站加分题

23.5-24.5,Bug已吐槽

  • 【小结】隐藏显示按钮,先改view出现按钮,发现没有链接路径route加入member,有的路径就要有相应的动作controller,简化controller里的代码到model中定义。

11-1 招聘网站加分题

24.5-1

  • 【小结】加入排序,先改view,发现点击没反应要加入路径和动作,而路径在8-2已经加过。查看log的parameters发现是order在传送动作by_upper_bound。最后把controller的代码部分简化到model的scope,比如recent、published。

11-2 招聘网站加分题

1-1.5

Q.知道11-1,model中只有user和job,不用写关系,但是加入resume就要写,是因为两个就不用多个就要吗?如果resume不写关系会怎样?
A.会提示出错,自己试试,一般model中的rb文件都是要根据所需功能设置关系的。比如,做招聘003的11-2QA,要先找到job,再找相关的resume,如果没有设置相关关系job has_many :resumes,系统就不知道要去哪里找resume。

Q.resume_controller的代码要怎么解读,自己写不出来?
A.第一段,找到要建立resume的那个具体的job(地址栏job/id),在这个job里新建resume页面。
第二段,①先找到具体在哪一个job上(即地址栏里的job/id);②通过筛选的栏位content(在resume_params中过滤)拉到新建立的resume上;③通过@resume.job = @job把job的地址给到新建的resume上,使job和新建的resume关联起来,得到一个具体的新resume的路径;④把当前用户设置成resume用户;

 def new
    @job = Job.find(params[:job_id])
    @resume = Resume.new
  end
  def create
    @job = Job.find(params[:job_id])
    @resume = Resume.new(resume_params)
    @resume.job = @job
    @resume.user = current_user
    if @resume.save
      flash[:notice] = "成功提交履历"
      redirect_to job_path(@job)
    else
      render :new
    end
  end

12-1招聘网站加分题

1.5

Q.简历数量的路径admin_job_resumes_path(job)是怎么来的?
A.很简单,看到的时候还没创建rails g controller admin::job,创建后rake routes就有了。

Comments

comments powered by Disqus