首頁  >  問答  >  主體

ruby - rails路由constraints問題

初學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
黄舟黄舟2708 天前622

全部回覆(2)我來回復

  • 天蓬老师

    天蓬老师2017-04-25 09:04:04

    • 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.

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

    回覆
    0
  • PHPz

    PHPz2017-04-25 09:04:04

    雷雷

    回覆
    0
  • 取消回覆