从Rails中的request.referer获取控制器名称的好方法

tva*_*nt2 26 ruby-on-rails-3

我知道我可以request.referrer用来获取Rails中的完整请求URL,但有没有办法从请求中获取控制器名称?

我想看看http://myurl.com/profiles/2的网址是否包含"个人资料"

我知道我可以使用正则表达式来做,但我想知道是否有更好的方法.

mor*_*itz 94

请记住,request.referrer在当前请求之前为您提供请求的网址.也就是说,以下是如何转换request.referrer为controller/actionn信息:

Rails.application.routes.recognize_path(request.referrer)
Run Code Online (Sandbox Code Playgroud)

它应该给你一些类似的东西

{:controller => "x", :action => "y"}
Run Code Online (Sandbox Code Playgroud)

  • `Rails.application.routes.recognize_path(request.referrer)[:controller]`准确无误. (6认同)
  • 天才。谢谢。 (2认同)
  • 非常感谢先生,你节省了我的时间. (2认同)

Ere*_*bih -8

在控制器内部,您有一个controller_name仅返回名称的方法。在你的情况下,它将返回“配置文件”。您还可以使用params[:controller]它返回相同的字符串。

  • 这个问题不是错误接受的吗?他是否不想知道如何分解引用者的操作/控制器而不是当前操作的操作/控制器? (17认同)