正如我们从这篇文章中所知,在Rails中,您可以通过调用获取前一个URL
request.referrer
Run Code Online (Sandbox Code Playgroud)
但是,如何检查前一个URL是否与Rails应用程序中的其余路径匹配?
通过宁静的路径,我指的是Rails提供的路径,例如,
books_path
book_path(book)
edit_book_path(book)
Run Code Online (Sandbox Code Playgroud)
当然我可以在request.referrer上做一个正则表达式字符串匹配,但我觉得它有点难看.
在我的应用程序中,一个特殊情况是request.referrer可以是"localhost:3000/books?page = 4"
我想要它匹配
books_path
Run Code Online (Sandbox Code Playgroud)
返回"/ books"
在这种情况下,如何在不进行正则表达式字符串匹配的情况下检查是否存在匹配?(如果这是可能的话)
谢谢
PS我试过正则表达式字符串匹配,它的工作原理.我只是觉得在Rails中可能有更好的方法.
vee*_*vee 17
您可以request.referer使用以下内容提取路径部分:
URI(request.referer).path
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用Rails.application.routes.recognize_path检查路径是否映射到控制器和操作,例如:
my_path = URI(request.referer).path
# => /books
Rails.application.routes.recognize_path(my_path)
# => {:action=>"show", :controller=>"books", :page=>"4"}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8237 次 |
| 最近记录: |