【问题标题】:Ruby on Rails - Map URL to a controller, method, and parametersRuby on Rails - 将 URL 映射到控制器、方法和参数
【发布时间】:2012-11-15 08:34:21
【问题描述】:

我知道 Rails 应用程序中的文件 routes.rb 将 URL 映射到 params 哈希中的控制器、方法和一组参数。这在某种程度上因“资源”、嵌套资源和非 RESTful 路由而变得复杂。

有没有办法在 Rails 控制台上运行命令来映射 URL 并准确确定哪个控制器、哪个方法、哪个 http 方法以及来自给定 URL 的参数散列的确切值?

然后是否可以在rails控制台上使用参数散列运行控制器方法并将控制器的输出发送到STDOUT?如果有,怎么做?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 url-routing rails-console


    【解决方案1】:

    试试这些

    Rails.application.routes.named_routes.each{|p,s| puts p,s} 
    Rails.application.routes.url_helpers.my_path_helper   # To get url for a path helper
    

    route = Rails.application.routes
    route.recognize_path "/poweruser/3"           # will give you result exactly you wanted 
    

    【讨论】:

    • 第二个答案是好的。但有时我会收到一个错误(RuntimeError route set not finalized)。 stackoverflow.com/questions/9291366/… 的此页面表明此技术不适用于 Rails 3。此外...此技术不适用于仅适用于 HTTP POST 的路由。
    • 好吧,我通常使用第一个命令来过滤和查找路由、它们的助手等。
    【解决方案2】:

    跑步试试

    bundle exec rake routes
    

    Determine if path exists as route in Rails controller

    Rails.application.routes.recognize_path
    

    【讨论】:

    • 我知道这件事。我正在寻找的是特别的东西。例如,如果我可以运行诸如“route '/poweruser/3'”之类的命令,它可能会给我类似“{:controller=>”poweruser, :params=>{:id=>3} }” 作为返回值(散列的散列)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2012-04-20
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多