ruby-on-rails - 传递“参数”时出现类型错误(没有将符号隐式转换为整数)
问题描述
首先 - 提前道歉。我意识到关于这个问题还有其他帖子,但我对开发非常陌生,需要更彻底的理解和解释。
问题是我在作为查询的一部分TypeError (no implicit conversion of Symbol into Integer)
发送时遇到错误。params
.where
我有一个 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]
,但我只是不知道我应该如何传递它的数据结构或符号是什么。任何我应该阅读的文档将不胜感激。
编辑:这是我的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'
解决方案
看起来您的数据库列phone
属于类型Integer
,您是否尝试过转换params[:From]
为整数?
更新后,它看起来像:
def incoming_text
user = User.where(phone: params[:From].to_i)
if user.present?
...
end
end
.to_
也会自动去掉“+”号
推荐阅读
- html - 通过在 Rails 上使用 simple_form_for 的独特输入将文件(图像、视频、音频、文本......)上传到 Cloudinary 的正确方法是什么?
- c - XC8 编译器无法识别 __delay 宏
- python - Tensorflow,model.predict 用于具有 4 列和 3 行的 input_arry
- mysql - SQL 查询将项目及其数量分组,然后显示总数量
- reactjs - 该请求在使用 Youtube Data API v3 时缺少有效的 API 密钥
- python - 如何将文件类型从一个用户选择的目录移动到另一个?
- azure - 调用rest API时Powershell Posted对象始终为空
- python - 如何使用 seaborn 绘制成对直方图
- c# - 滚动 TableLayoutPanel 到按钮单击
- ios - iOS - 商业和教育发行版