如何使用 Twilio SMS params[:Body] 搜索 rails 数据库

how to use Twilio SMS params[:Body] to search a rails database

您好,我正在尝试搜索我的数据库,以使用 twilio 从短信的 body 中查找食谱。到目前为止,这是我在控制器中的代码

 def process_sms
    @recipe = Recipe.find_by(params[:title])
    render 'process_sms.xml.erb', :content_type => 'text/xml'
  end

我的路线:

root          'recipes#index'
  devise_for    :users
  resources     :recipes
  post          'twilio/voice' => 'twilio#voice'
  post          'twiliosms/send_sms' => 'twiliosms#send_sms'
  match         'twiliosms/process_sms' => 'twiliosms#process_sms', via: :all

我希望能够从 SMS 中搜索菜谱标题并呈现一些 xml。当前的实现会一遍又一遍地发回相同的配方。我认为这与不在同一控制器操作中传递 twilio params[:Body] 并使用它来匹配 recipe(params[:title]) 但不完全确定有关。任何帮助,将不胜感激。谢谢!

您可以考虑在控制器函数中使用 .where(假设您的模型列名为 "title"):

def process_sms
  @recipe = Recipe.where(title:params[:title])
  render 'process_sms.xml.erb', :content_type => 'text/xml'
end

这里是 Twilio 开发人员布道者。

您提到了 params[:Body],这是 SMS 消息文本所在的参数,但是您使用 params[:title] 进行搜索。在来自 Twilio 的传入 webhook 的上下文中,params[:title] 将为零,所以我猜你返回的食谱没有标题。

我认为你应该使用:

def process_sms
  @recipe = Recipe.find_by(title: params[:Body])
  render 'process_sms.xml.erb', :content_type => 'text/xml'
end

如果有帮助请告诉我。

[编辑] 更新了对 find_by

的调用