Как реализовать sms-подтверждение регистрации?

Сайт построен на Sintra и в экшенах есть такой код:
post '/registration/sms/:number' do
  code = Random.rand(1111..9999).to_s
  phone = params[:phone].to_s
  HTTParty.get('http://sms.ru/sms/send?api_id=' + api_id +'&to=' + phone + '&text=' + code)
  # check code
end

И такая вьюха:
%form{:method => "post"}
  %div.form-group
    %label Телефон
    %input#phone.form-control{:name => "phone", :placeholder => "7 950 123 45 67"}
    %p.help-block Введите доступный Вам номер, на него будет отправлен код активации
  %div.checkbox
  %button#sendsms.btn.btn-default{"data-toggle" => "modal", "data-target" => "#myModal"} Отправить

С таким JavaScript-ом:
$("#sendsms").click(function(){
  var phone = $("#phone").value();
  $.ajax({
    url: "/registration/sms",
    data: {"phone": phone},
    type: "post"
  })
})

По разумению моему, JS должен отправлять post запрос на /registration/sms с параметром phone, который обрабатываясь экшеном, создает новый запрос на sms.ru, который собственно отправляет sms. Однако этого не происходит и я ума не приложу как заставить его работать.
Заранее благодарю за любую помощь.
  • Вопрос задан
  • 5572 просмотра
Решения вопроса 1
@askhat Автор вопроса
В экшене не нужен параметр :number, так что он должен выглядеть так:
post '/registration/sms' do
  # code..
end

Также необходимо исправить присваивание переменной phone в JS, вот так:
var phone = $("#phone").val();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ghaiklor
@ghaiklor
NodeJS TechLead
Первое что бросается в глаза:
Принимаете по такому роуту - post '/registration/sms/:number' do
А отправляете по другому url: "/coop/sms".

Без отладки не поможем. Причин может быть множество: повисла апишка смс-ок, на бекенде не приходят параметры, на фронтенде не берет параметры.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы