2014-10-20 110 views
4

我希望能夠在Ruby on Rails的請求中獲取當前路由的名稱。我已經找到了可以訪問請求的控制器和操作的方法,但是我想訪問該名稱的字符串或符號。在Rails中獲取當前路徑名稱

例如,如果我有一個users資源;

  • 如果我去/用戶/ 1我希望能夠得到users_path
  • 如果我去/用戶/ 1 /編輯我希望能夠得到edit_users_path

我只想在給定請求中檢索當前路由的名稱。

+0

不知道我明白這個問題,但是如果你在你的終端裏輸入耙路徑,它會給你所有的路徑 – Joel 2014-10-20 12:54:42

+0

我知道'rake routes'會列出我的路由,我希望得到單個請求期間的路由。 – Dwight 2014-10-20 13:01:06

回答

0

您可以使用下面的方法來獲取你的行動當前的URL,但他們都不會給你路由的名稱,比如users_path

request.original_url # => www.mysite.com/users/1 

request.request_uri # = > /users/1 
2

下面的代碼將它送給你。

Rails.application.routes.recognize_path(request.request_uri) 

注意,也有一些例外,可以在ActionDispatch::Routing::RouteSet拋出(這是從Rails.application.routes返回),所以要小心那些。您可以找到方法here的實施。

+1

在Rails 4中,似乎我不得不使用'request.original_url'來代替。當我查找'new_user_path'時,響應是'{:action =>「new」,:controller =>「users」}'。 – Dwight 2014-10-20 13:38:38