【发布时间】:2012-06-17 19:32:23
【问题描述】:
我已在我的 Twilio 帐户中设置了请求 URL,以便将其发布到:myurl.com/receivetext。它似乎已成功发布,因为当我使用 Heroku 控制台检查数据库时,我看到以下内容:
post id: 5, body: nil, from: nil, created_at: "2012-06-14 17:28:01", updated_at: "2012-06-14 17:28:01"
为什么它从 body 和属性中接收 nil?我无法弄清楚我做错了什么!创建和更新的 at 存储成功,但我关心的两个属性继续存储为 nil。
这是接收来自 Twilio 的 Post 请求的 Receive Text 控制器:
class ReceiveTextController < ApplicationController
def index
@post=Post.create!(body: params[:Body], from: params[:From])
end
end
编辑:当我转储参数时,我收到以下信息: "{\"controller\"=>\"receive_text\", \"action\"=>\"index\"}"
我通过将以下内容插入到我的 ReceiveText 控制器中来实现这一点。 @params = Post.create!(body: params.inspect, from: "Dumping Params") 然后打开 Heroku 控制台以查找带有 from = "Dumping Params" 的数据库条目。
我使用以下命令 curl -X POST myurl.com/receivetext route -d 'AccountSid=AC123&From=%2B19252411234' 模拟了一个带有 curl 的 Twilio 请求
我再次检查了生产数据库,发现 curl 请求在获取 FROM 属性时确实有效。它存储了以下内容:
params.inspect 返回 "{\"AccountSid\"=>\"AC123\", \"From\"=>\"+19252411234\", \"co..."
我收到一条评论说:“只要 twilio 使用相同的方法 (GET/POST) 访问相同的 URL,它也应该填充 params 数组”我不知道如何使这条评论可行。我对rails很陌生。
这是我的数据库迁移(我将两个属性都设置为字符串。我尝试将其设置为文本,但也没有用):
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :body
t.string :from
t.timestamps
end
end
end
这是我的帖子模型:
class Post < ActiveRecord::Base
attr_accessible :body, :from
end
路线(一切似乎都很好):
MovieApp::Application.routes.draw do
get "receive_text/index"
get "pages/home"
get "send_text/send_text_message"
root to: 'pages#home'
match '/receivetext', to: 'receive_text#index'
match '/pages/home', to: 'pages#home'
match '/sendtext', to: 'send_text#send_text_message'
end
这是我的 gemfile(如果有帮助的话)
source 'https://rubygems.org'
gem 'rails', '3.2.3'
gem 'badfruit'
gem 'twilio-ruby'
gem 'logger'
gem 'jquery-rails'
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
【问题讨论】:
-
Body 和 From 在 Twilio 发送时是大写参数 - 如果 Rails 参数区分大小写,他们将找不到它
-
它不工作。两个属性仍然为零。
-
你能转储 params 数组吗?那里有什么?
-
"{\"controller\"=>\"receive_text\", \"action\"=>\"index\"}"
-
我通过将以下内容插入到我的 ReceiveText 控制器中来实现这一点。 @params = Post.create!(body: params.inspect, from: "Dumping Params") 然后打开 Heroku 控制台以查找带有 from = "Dumping Params" 的数据库条目。
标签: ruby-on-rails-3 post twilio