2017/9/14

rails debug 技巧

在 controller 裡的 action 可以取得 request 物件

class TestController < ApplicationController
  def index
    p request.class
    render plain: "ok"
  end
end

會發現 request 物件是 ActionDispatch::Request 類別

request.headers 是 ActionDispatch::Http::Headers 類別

我們可以用 each 去印出 headers 的所有內容:

request.headers.each{|header| p header }

仔細觀察會發現 header 是一個長度為2的陣列, header[0] 代表 key,header[1] 則代表 value。

def index
  headers = request.headers.to_a.keep_if { |header| 
    header[0].index('HTTP') == 0 
  }.map{ |header| 
    "#{header}"
  }
  render plain: headers.join("\n")
end

可以透過 keep_if 保留想要關注的資訊

沒有留言: