首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在graphql-ruby解析器中包含url助手

在graphql-ruby解析器中包含url助手
EN

Stack Overflow用户
提问于 2017-02-03 02:04:56
回答 1查看 1K关注 0票数 4

我正在尝试从graphql-ruby中的resolve方法访问url助手,以生成像url这样的字段。我知道我能做到:

代码语言:javascript
复制
EventType = GraphQL::ObjectType.define do
  field :url, !types.String do
    resolve ->(event, _args, _ctx) do
      Rails.application.routes.url_helpers.event_path event
    end
  end
end

我知道可以在你的模型中使用include Rails.application.routes.url_helpers来避免每次调用都加上前缀,但是如何使用graphql-ruby来做到这一点呢?

另外,如果我调用event_url,它没有主机和端口。显然,我希望避免在每个帮助器调用中都添加host: request.host

EN

回答 1

Stack Overflow用户

发布于 2017-02-03 02:04:56

我已经通过创建将url_helpers注入解析器上下文的config/initializers/graphql.rb解决了这个问题:

代码语言:javascript
复制
module GraphQL
  module Define
    class DefinedObjectProxy
      include Rails.application.routes.url_helpers
    end
  end
end

至于主机和端口,它看起来像

代码语言:javascript
复制
# Allow to build url from models or graphql without needing to pass host/port every time
Rails.application.routes.default_url_options = Rails.application.config.action_mailer.default_url_options

真的很管用。我已经将它插入到一个单独的初始化器中,尽管我怀疑将它添加到config/routes.rb中也可以。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42009308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档