我已经在我的 Twilio 帐户中设置了请求 URL,以便将其 POST 到:myurl.com/receivetext。它似乎已成功发布,因为当我使用 Heroku 控制台检查数据库时,我看到以下内容:
帖子 ID:5,正文:nil,来自:nil,created_at:“2012-06-14 17:28:01”,updated_at:“2012-06-14 17:28:01”
为什么它从身体和属性中接收 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