Всем привет. Есть у меня значит контроллер vk_tracks, в нем есть метод add, Этот метод добавляет аудиозапись к пользователю. Иногда при большом кол-ве запросов вылетает captcha и эту капчу надо обработать. Для vk api я пользуюсь этим гемом:
https://github.com/7even/vkontakte_api
Все запросы выполняются через ajax.
Вот код:
def add
@vk_track = VkTrack.find(params[:id])
if params[:captcha]
id = @vk.audio.add(audio_id: @vk_track.vk_id, owner_id: @vk_track.owner_id, captcha_sid: params[:captcha_sid], captcha_key: params[:captcha])
respond_to do |format|
format.html {}
format.js {}
end
else
begin
@vk.audio.add(audio_id: @vk_track.vk_id, owner_id: @vk_track.owner_id)
respond_to do |format|
format.html {}
format.js {}
end
rescue VkontakteApi::Error => @e
if @e.error_code == 14
respond_to do |format|
# тут мы просто выводим модальное окно а в нем картинку с капчей и форму
format.js { render :file => "vk_tracks/captcha.js.erb" }
end
else
raise
end
end
end
end
Я в руби новенький и не могу понять как сделать правильно. Сейчас у меня при сработке капчи вылетает модальное окно с капчей и формой. Эта форма отправляет данные в тот же контроллер и метод. Есть ли путь проще? И как правильнее сделать обработку капчи.