【问题标题】:Not all methods are getting called Sinatra并非所有方法都被称为 Sinatra
【发布时间】:2014-10-17 14:27:02
【问题描述】:

我正在使用 Sinatra 和 Twilio api 构建一个 Ruby 应用程序。

通过给我分配的 Twilio 号码的电话,系统会提示用户录制音频消息。记录该消息后,用户将被重定向到以下路由,如果用户拨打 1(或其他任何内容),他们应该被重定向到他们的 msgs 提要,但如果用户拨打 2,则用户的消息将被删除并且应该被重定向到他们可以记录新消息的路线。

这是我的路线:

get '/playback/handle-recording/:recordingSID' do
  if params['Digits'] = '2'
    delete(params['recordingSID'])
    deletedMsg = "Audio deleted."
    getRecord(deletedMsg)
  else
    getFeed()
  end

end

辅助方法:

helpers do

  def delete(recording)
    recording = client().account.recordings.get(recording)
    recording.delete
  end

  def getFeed()
    redirect '/feed'
  end

  def getRecord(appendMsg)
    Twilio::TwiML::Response.new do |response|
      if appendMsg
        response.Say appendMsg
      end
      response.Say "Record your message."
      response.Record :maxLength => '5', :trim => "trim-silence", :playBeep => "true", :action => '/playback', :method => 'get'
    end.text
  end

end

我的问题是,无论用户是使用“if”还是“else”第一种方法,getRecord(deletedMsg) 都会被调用,而不是 getFeed()。

我怎样才能修复我的路线,以便如果用户登陆else,他会被重定向到他的提要页面而不是 getRecords 方法。

【问题讨论】:

    标签: ruby routing sinatra twilio redirect


    【解决方案1】:

    你确定他们真的进入了else 吗? Ruby 不会无缘无故地随机不执行其中的内容。

    您可能想要查看的一件事是您正在分配,而不是比较 params 值:

    if params['Digits'] = '2'
    

    你会想要做的:

    if params['Digits'] == '2'
    

    这肯定会导致 if 语句中出现一些奇怪的行为,例如总是执行一条路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 2012-06-11
      • 2018-04-18
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      相关资源
      最近更新 更多