【问题标题】:What is the opposite of url_for in Rails? A function that takes a path and generates the interpreted route?Rails 中 url_for 的对立面是什么?一个采用路径并生成解释路由的函数?
【发布时间】:2010-02-08 15:15:38
【问题描述】:

大脑有点炸了....如何从 relative_path 中获取 :controller 和 :action 的哈希?

这与 url_for 基本相反。在下面的示例中,“some_function”是我正在寻找的神秘函数名称...我知道这很简单,只是不记得或似乎无法在文档中找到它。

像这样:

some_function('/posts/1/edit')
=> {:controller => 'posts', :action => 'edit', :id => '1'}

【问题讨论】:

  • controller.action_namecontroller.controller_name 足够了吗?或者您真的需要从当前控制器/动作的“外部”操作通用相对路径吗?
  • 我确实……很不幸。不过还是谢谢。

标签: ruby-on-rails ruby routing url-routing actionpack


【解决方案1】:

Rspec 有一个方法 'params_for',它使用 Action Controller 的路由方法将带有方法的路径解析为路由。

他们的比这更强大一点,但归结为:

def params_for(path, method)
  params = ActionController::Routing::Routes.recognize_path(path, :method => method)
end

【讨论】:

  • 使用 ActionController::Routing::Routes 时可能会收到弃用警告
  • 请提供params_for方法的源链接
  • Rails.application.routes.recognize_path 适用于 Rails 3.2
【解决方案2】:

使用 Rails 3 最好的方法是使用

Rails.application.routes.recognize_path('/posts/1/edit')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2020-11-16
    • 2011-10-13
    • 1970-01-01
    相关资源
    最近更新 更多