【问题标题】:Ruby on Rails: TypeError (No implicit conversion of String into Integer)Ruby on Rails:TypeError(没有将字符串隐式转换为整数)
【发布时间】:2021-03-28 05:40:51
【问题描述】:

知道为什么这段代码会抛出类型错误吗? (没有将String隐式转换为Integer)

integration.properties[ApplicationIntegrations::SendSummary::WEBHOOK] = data["incoming_webhook"]["url"]

为了更清楚,我将以下代码添加到上述问题中-

def authorize
      integration = Application::Integration.find_integration(user: user)

      if integration && data["incoming_webhook"]
        if integration.enabled?
          integration.scopes.concat(data['scope'].split(',')).uniq!
          integration.properties[ApplicationIntegrations::SendSummary::WEBHOOK] = data["incoming_webhook"]["url"]
          integration.save
        else
          Rails.logger.error "AuthorizeWebhook called for #{user.email} with disabled integration."
        end
      end

      integration
    end

这是确切的错误 -

TypeError:
   no implicit conversion of String into Integer
 # ./app/integrations/authorize_webhook.rb:17:in `[]='
 # ./app/integrations/authorize_webhook.rb:17:in `authorize'

我们将不胜感激任何形式的帮助。提前致谢。

【问题讨论】:

  • 我猜integration.propertiesdatadata['incoming_webhook'] 是一个字符串,而不是 json 对象,因此它期望方括号中的整数索引,而不是字符串。一旦你弄清楚它是哪一个,试着把它包装在JSON.parse()
  • No implicit conversion of String into Integer 通常意味着您正在尝试使用字符串(即some_array['string'])索引数组。那么data 是什么样的呢? data['incoming_webhook'] 怎么样?
  • integration.properties 是散列还是数组?

标签: ruby-on-rails ruby string integer typeerror


【解决方案1】:

试试:

integration.properties[ApplicationIntegrations::SendSummary::WEBHOOK] = (data["incoming_webhook"]["url"]).to_i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多