ruby - rails路由constraints問題
黄舟
黄舟 2017-04-25 09:02:04
0
2
661

初學rails,有幾個問題不懂。

class NamespaceConstraint
  def self.matches?(request)
    name = request.fullpath.split('/').second.downcase
    if name[0] == '~' then name = name[1..-1] end
    ns = Namespace.where(name_lower: request.fullpath.split('/').second.downcase).first
    not ns.nil?
  end
end
Rails.application.routes.draw do

  constraints(NamespaceConstraint) do
    get  ':namespace' => 'namespaces#show'
  end

end
  • 這段程式碼大致上是什麼意思?

  • self.matches?這個函數名問號是什麼意思?

  • 這個request變數名並沒有定義,是rails自動產生的嗎?

  • not ns.nil?這個是啥意思?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(2)
Peter_Zhu
  • ruby中約定帶 ? 的方法回傳值是true/false

  • request是rails controller中自訂的變量,同樣的對應的 response也是

  • not 是取反的意思,例如 not true就是false, ns.nil?回傳的是一個boolean類型, not取反

  • 這個方法是用來匹配路由的,request.fullpath 回傳的是相對路徑例如blogs.com/blogs則回傳/blogs,那麼第一行最終取得的是'blogs',然後將'blogs'去找當前路由是否有與之相符的,有則true 無則false.

  • 這些方法你都可以在本地嘗試一步步跑一遍,這不是個複雜的東西

PHPzhong

雷雷

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板