我将 Rails API 应用程序转换为普通的 Rails 应用程序,没有问题。然后它开始给我一些问题,在使用相同的代码之前它工作得很好。
我有一个 Telegram 机器人,Telegram 将 POST 请求发送到我的 Rails 应用程序。所以,我有这个代码来转换哈希中的参数:
message = params[:message].to_unsafe_h
我开始记录,所以我这样做:
logger.debug message.to_yaml
logger.debug message[:text]
它正确返回
D, [2019-08-11T15:39:14.955103 #13713] DEBUG -- : [56fbc12a-ad66-46d6-956d-94870d3ca0ec] --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
update_id: 200421708
edited_message: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
message_id: 37769
from: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: 85039287
is_bot: false
first_name: Dennis
last_name: Radaelli
username: Radden
chat: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: -1001447558052
title: WIKINETWORK OT - FERDINANDO PADANIA VI FANNO IMPAZZIRE
type: supergroup
date: 1565477411
edit_date: 1565477416
text: Vada! Vada!
D, [2019-08-11T15:39:15 #13714] DEBUG -- : Vada! Vada!
但是,如果我这样做if message[:text] =~ /asd/i
,它会返回我No method error, undefined method [] for Nil:NilClass
。但这不是零!它在几秒钟前正确地说。
疯了吧。我已经花了 3 个小时进行测试,但我不明白为什么。在此先感谢您的帮助。