stecd
stecd

Reputation: 1691

Not all methods are getting called Sinatra

I am building a Ruby app using Sinatra and the Twilio api.

Over a phone call to my assigned Twilio number, the user gets prompted to record an audio message. Once that message is recored the user gets redirected to the following route where if the user dials 1 (or anything else), they should get redirected to their feed of msgs, but if the user dials 2, then the user's message gets deleted and should get redirected to a route where they can record a new message.

Here is my route:

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

end

helper methods:

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

My issue is that whether the user lands in the "if" or the "else" the first method, getRecord(deletedMsg) is the one that gets called, and not the getFeed().

How can I fix my route so that if the user lands in the else he does get redirected to his feed page and not to the getRecords method.

Upvotes: 0

Views: 50

Answers (1)

Nick Veys
Nick Veys

Reputation: 23949

Are you sure they're actually making it into the else? Ruby won't just randomly not execute what's in there for no good reason.

One thing you may want to look at is you are assigning, not comparing the params value:

if params['Digits'] = '2'

You'll want to do:

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

That could definitely lead to some strange behavior in an if statement, like, for instance always executing one path.

Upvotes: 1

Related Questions