【发布时间】: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.properties、data或data['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