def add
vk_track = VkTrack.find(params[:id])
@vk.audio.add(audio_params(vk_track))
rescue VkontakteApi::Error => e
raise e unless e.error_code == 14
respond_to do |format|
# Старайтесь не делать ваши вьюхи зависимыми от инстанс-переменных (@var)
# По возможности, старайтесь использовать partials и передавать
# зависимости явным образом
# file: app/views/controller_name/_captcha.js.erb
# в нем будет доступна переменная exception
format.js { render partial: 'captcha', exception: e }
end
end
def audio_params(vk_track)
{
audio_id: vk_track.vk_id,
owner_id: vk_track.owner_id
}.merge(captcha_params)
end
def captcha_params
return {} unless params[:captha]
{
captcha_sid: params[:captcha_sid],
captcha_key: params[:captcha]
}
end
Скажу честно, я не проверял работоспособность кода, но вроде проблем возникнуть не должно никаких.