gpt4 book ai didi

ruby-on-rails - 从 url 字符串中查找路由路径

转载 作者:数据小太阳 更新时间:2023-10-29 06:59:35 25 4
gpt4 key购买 nike

我想知道api请求的路由是什么

比方说 api_v1_user_session_path 是 /api/v1/users/sign_in url 的路径

如果请求来自 /api/v1/users/sign_in 我如何找出路由。在这种情况下,它应该是 api_v1_user_session_path

我尝试了下面的语句,但它提供了 Controller 和操作,但没有提供路由。

Rails.application.routes.recognize_path('/api/v1/users/sign_in')
=> {:controller=>"api/v1/sessions", :action=>"new"}

有没有这样的方法

Rails.application.routes.get_route('/api/v1/users/sign_in')
=> api_v1_user_session

如何从 url 或 request 对象中获取此路由。

最佳答案

通过更多搜索,我能够自己弄明白。

class StringToRoute

attr_reader :request, :url, :verb

def initialize(request)
@request = request
@url = request.original_fullpath
@verb = request.request_method.downcase
end

def routes
Rails.application.routes.routes.to_a
end

def recognize_path
Rails.application.routes.recognize_path(url, method: get_verb)
end

def process
_recognize_path = recognize_path
routes.select do |hash|
if hash.defaults == _recognize_path
hash
end
end
end

def get_verb
verb.to_sym
end

def path
"#{verb}_#{process.name}"
end
end

结果:

StringToRoute.new(request).path

关于ruby-on-rails - 从 url 字符串中查找路由路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33267281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com