加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:17:56 所属栏目:百科 来源:网络整理
导读:我想知道api请求的路由是什么. 让我们说例如api_v1_user_session_path是/ api / v1 / users / sign_in url的路由 如果请求来自/ api / v1 / users / sign_in我如何找出路由是什么.在这种情况下,它应该是api_v1_user_session_path 我尝试了下面的声明,但它给
我想知道api请求的路由是什么.

让我们说例如api_v1_user_session_path是/ api / v1 / users / sign_in url的路由

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

我尝试了下面的声明,但它给出了控制器和动作但不是路线.

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(请求).路径

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读