[流程] 自作Job-Listing (Part I 管理員)

  • Step 1

    • 套上 Bootstrap 页面
    • 安装 simple_form
    • 安装 devise (须做到可以登入 / 登出)
  • Step 2

    • 实作 Job 的 CRUD ( JobsController )
    • 先只开 Job 的 title, description
    • (最小可行性界面)
  • Step 3 - 1

    • 要新增 / 修改 / 删除 Job 必须得登入

    1.加入

    app/controller/jobs_controller.rb
      before_action :authenticate_user!, only: [:new, :edit, :update, :destroy, :create]
    
  • Step 3 - 2

    • 实作 Job 的 Admin 的 CRUD,在 admin/jobs

      1.加入namespace

config/routes.rb
namespace :admin do
    resources :jobs
end


2. 把jobs的controller抄到admin/jobs 包括index,show,edit,new.html
裡面的回到首頁改成 redirect_to admin_jobs_path

3. 相關路徑加入admin

  • 下拉选单要有一个链接可以到 admin_jobs_path
    1.失敗 http://nn70-blog.logdown.com/posts/1722396
    原因:先寫了require_is_admin的部分代碼
    4/19 補充:發現anndo找到實際的原因 http://anndo-blog.logdown.com/posts/1714674

    • Step 3 - 3
  • 在 admin / jobs 皆需要先过 require_is_admin 才能进入,否则回去首页
    1.加入before_action

    app/controller/admin/jobs_controller.rb
    before_action :require_is_admin
    

    一般的controller不需要

    app/controller/jobs_controller.rb

    before_action :require_is_admin

  • 定义一个条件 admin? 判断是否是 admin

    1.這邊代碼太難一定做不出來,參考教材用抄的
    https://fullstack.xinshengdaxue.com/posts/536

    把原本user改為admin的方法看上面連結

    原理:User現在沒有辨別是否admin的欄位,增加一個is_admin的boolean value(true,false)

    2.增加database方法

    rails g migration add_is_admin_to_user

    再修改

    db/migrate/xxxxx.rb
    +def change
    add_column :users, :is_admin, :boolean, default: false
    add_column :jobs, :contact_email, :string
    end
    


rake db:migrate

  • Step 3 - 4

    • 新增「薪资上限」与「薪资下限」、「联络方式」
    • wage_upper_bound
    • wage_lower_bound
    • contact_email
      1.一樣上面的方法增加database
      再把這三個資料填入form需求裡面 =edit,new,show.html
      並記得要加入params的白名單才會被記錄
      http://nn70-blog.logdown.com/posts/1723020-report-an-error-record-9-recruitment-website
    • 「薪资上限」、「薪资下限」不得为空
      1. app/models/job.rb
          validates :wage_lower_bound, presence: true
        validates :wage_upper_bound, presence: true
        
    • 「薪资」必须是数字
      1. 建立database時有填入integer就一定是數字
        「Bonus」讓最低薪資大於零的方法
        app/models/job.rb
        validates :wage_lower_bound, numericality: { greater_than: 0}
        
  • Step 3 - 5

    • 管理者可以设定职缺是否在前台隐藏 1.再增加一個數據進jobs的database, "is_hidden" 在admin下的new,edit.html裡面增加is hidden的欄位 <%= f.input :is_hidden %> #記得要在permit裡加入is_hidden才能被save
  • Step 3 - 6

    • 被设为隐藏的职缺,是不可以在前台看到的 ruby controllers/jobs_controller.rb -- @jobs = Job.all ++ @jobs = Job.where.(:is_hidden => false)
  • Step 4

    • 首页职缺应该按照发表时间顺序ruby controllers/jobs_controller.rb -- @jobs = Job.where.(:is_hidden => false) ++ @jobs = Job.where.(:is_hidden => false).order("created_at DESC")

加分題太難就先不自己嘗試了

comments powered by Disqus