【发布时间】:2020-01-02 07:56:03
【问题描述】:
首先 - 提前道歉。我知道关于这个问题还有其他帖子,但我对开发非常陌生,需要更彻底的理解和解释。
问题是我在发送params 作为.where 查询的一部分时收到TypeError (no implicit conversion of Symbol into Integer) 错误。
我有一个 Twilio 集成,当我收到来自电话号码的文本时,我想在我的数据库的 Users 表中查找该电话号码以查看它们是否存在,然后执行一些操作。
这是我在控制台中看到的从 Twilio 的 POST 调用中获得的参数(我删除了敏感或不相关的参数):
Parameters: {"SmsStatus"=>"received", "Body"=>"Blah blah blah", "From"=>"+15555555555"}
这里是被击中的控制器方法:
def incoming_text
user = User.where(phone: params[:From])
if user.present?
url = URI.extract(params[:Body])
if url.present? ### Row #26
end
end
根据我读过的其他线程,我认为问题在于我如何传递params[:From],但我只是不知道数据结构或符号是什么我应该 /em> 通过它。我应该阅读的任何文档将不胜感激。
编辑:这是我的users 表的架构:
create_table "users", force: :cascade do |t|
t.string "phone"
t.boolean "confirmed"
end
EDIT2:真正的问题似乎与此无关。我还在调查,但我不想浪费任何人的时间。
EDIT3:以下是日志:
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."phone" = ? [["phone", "+15555555555"]]
#<User:0x00007efcedb05400>
Completed 500 Internal Server Error in 8ms (ActiveRecord: 0.8ms)
TypeError (no implicit conversion of Symbol into Integer):
app/controllers/users_controller.rb:26:in `incoming_text'
【问题讨论】:
-
这是整个
params对象吗?看起来是数组而不是哈希,params.keys返回什么? -
@SebastianPalma 这里是键: ToCountry ToState SmsMessageSid NumMedia ToCity FromZip SmsSid FromState SmsStatus FromCity Body FromCountry ToZip NumSegments MessageSid AccountSid From ApiVersion 控制器操作
-
可以在请求的时候添加日志吗?
-
@SebastianPalma 已更新。另请阅读我在您之前发布的第二次编辑。我想我在看(a)错误的问题(有一个 500 错误,但我不知道为什么),并且(b)
TypeError似乎发生在我以前没有包括的另一行上。我现在已经包含了它。
标签: ruby-on-rails hash parameters ruby-on-rails-5