我的大脑有点混乱....如何从相对路径中获取:controller和:action的哈希值?
这基本上是url_for的反向操作。在下面的示例中,“some_function”是我正在寻找的神秘函数名称......我知道这很简单,只是不能记住或似乎无法在文档中找到它。
就像这样:
some_function('/posts/1/edit')
=> {:controller => 'posts', :action => 'edit', :id => '1'}
我的大脑有点混乱....如何从相对路径中获取:controller和:action的哈希值?
这基本上是url_for的反向操作。在下面的示例中,“some_function”是我正在寻找的神秘函数名称......我知道这很简单,只是不能记住或似乎无法在文档中找到它。
就像这样:
some_function('/posts/1/edit')
=> {:controller => 'posts', :action => 'edit', :id => '1'}
在Rails 3中,最好的方法是使用:
Rails.application.routes.recognize_path('/posts/1/edit')
Rspec有一个名为'params_for'的方法,它使用Action Controller的Routing Methods将带有方法的路径解析为路由。
他们的方法比这个更加强大,但归根结底就是这样。
def params_for(path, method)
params = ActionController::Routing::Routes.recognize_path(path, :method => method)
end
Rails.application.routes.recognize_path
适用于 Rails 3.2。 - zykadelic
controller.action_name
和controller.controller_name
足够吗?或者你真的需要操作相对于当前控制器/操作的“外部”通用路径吗? - Martin Carpenter