我正在使用Sinatra和Twilio api构建一个Ruby应用程序。
通过拨打我指定的Twilio号码,系统会提示用户录制音频信息。一旦记录了该消息,用户就会被重定向到以下路由,如果用户拨打1(或其他任何内容),他们应该被重定向到他们的消息提要,但是如果用户拨打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
时,他会被重定向到他的Feed页面而不是getRecords方法。
答案 0 :(得分:1)
你确定他们真的把它变成了else
吗? Ruby不会毫无理由地随意执行那里的内容。
您可能想要看一件事是分配,而不是比较params
值:
if params['Digits'] = '2'
你想做的事:
if params['Digits'] == '2'
这肯定会在if语句中导致一些奇怪的行为,比如总是执行一条路径。