rails路由constraints问题
巴扎黑
巴扎黑 2016-11-09 17:40:43
0
1
723

初学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? endend Rails.application.routes.draw do constraints(NamespaceConstraint) do get ':namespace' => 'namespaces#show' endend

这段代码大致是什么意思?

self.matches?这个函数名问号是什么意思?

这个request变量名并没有定义,是rails自动生成的吗?

not ns.nil?这个是啥意思?


巴扎黑
巴扎黑

répondre à tous (1)
phpcn_u29

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.

这些方法你都可以在本地尝试一步步跑一遍,这不是个复杂的东西


    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!