0

我已经在我的 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 请求

我再次检查了生产数据库,发现在获取 FROM 属性时 curl 请求确实有效。它存储了以下内容:

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
4

1 回答 1

0

您是否尝试过将此create操作称为viaPOST

class ReceiveTextController < ApplicationController
  def create
    @post = Post.create!(body: params[:Body], from: params[:From])
  end
end

在你的routes.rb

post "receive_text/create"
于 2012-06-18T15:12:11.083 回答