【问题标题】:how to fetch the route i.e path of my current api in routes.rb file如何在 routes.rb 文件中获取路径,即我当前 api 的路径
【发布时间】:2019-02-01 11:17:25
【问题描述】:

我是铁路新手。我有一些澄清,我在下面列出。

  1. 我提到了许多链接和堆栈溢出问题,到处都提到使用 request 并获取有关 路径、控制器、操作 等的详细信息,但是如果我在 routes.rb 中使用 request ,它会抛出 undefined local variable or method 错误。

  2. 我在我的 routes.rb 中使用了 constraints 并从那里调用一个方法 ma​​tches? 来自动态约束的类在 lib/constraints 目录中定义。在这里 ma​​tches?(request) 接收一个名为 request 的参数,其中包含有关当前路由的详细信息,参数值从哪里发送?,我有这个疑问,因为在 routes.rn 中使用此方法时在 constraint(ClassName) 我没有指定方法名称 (匹配?) 或参数 request

我想知道幕后的工作。

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    你在找它吗

    request.url
    # => "http://localhost:3000/lists/7/items"
    request.path
    # => "/lists/7/items"
    

    【讨论】:

    • 不,Rails.application.routes.routes 这个给出了所有路线的列表,我的问题是如何获取我的 的路线而不是获取所有路线routes.rb 中的当前网址
    • 嗨 @NarayananV 你想在哪里获取它?在控制器处执行任何操作?
    • 我需要在 routes.rb 获取,如问题 1 中所述。 我提到了几个堆栈问题,它指示我使用 request.path 但它给我一个未定义的变量错误,有没有其他方法可以在 routes.rb 中获取 url 路径?
    • @NarayananV 我听不懂,如果你能举个例子就更好了。
    • 与我尝试在 routes.rb 中访问的方式相同,它抛出了 NameError 未定义的变量或方法请求
    【解决方案2】:

    如果你有 URI:

    localhost:3000/users/:id
    localhost:3000/users
    localhost:3000/users/new
    ....
    

    你可以做类似的事情

    rake routes | grep user
    

    为了只获取路径名中包含user 的那些。

    希望这会有所帮助..

    【讨论】:

      【解决方案3】:

      通常,您不会访问 routes.rb 中的当前路径,至少您似乎要求访问它。 rails 路由器中使用了许多不同的匹配方法和技术,这些方法和技术可以服务于我想象中您正在寻找的实用程序。

      这是文档的链接:https://guides.rubyonrails.org/routing.html

      您能否准确分享一下为什么要访问 routes.rb 文件中的当前路由?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-06
        • 1970-01-01
        • 2021-11-02
        • 2016-06-04
        • 2018-03-11
        相关资源
        最近更新 更多