Ответы пользователя по тегу ВКонтакте
  • RoR. Как правильно обработать ошибку приходящую от API?

    rinat_crone
    @rinat_crone
    Chef Technical Officer
    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


    Скажу честно, я не проверял работоспособность кода, но вроде проблем возникнуть не должно никаких.
    Ответ написан