Rails не возвращается из этого действия - PullRequest
0 голосов
/ 01 июля 2019

У меня очень простая проблема. По сути, у меня есть действие Rails для моей страницы видео. Он делает HTTP-запрос и возвращает ответ. Но я пытаюсь добавить проверку ошибок прямо сейчас. Моя проблема в том, что он НЕ ВЫЙДЕТ из этого действия после входа в блок if. По-видимому, он продолжает пытаться запустить весь код после блока if ... Это плохо, потому что, если он входит в блок if, это означает, что мы не получили ответ 200 OK. Нечего бежать. Просто скинуть сообщение об ошибке и еще раз!

Он входит в блок if ( ссылка Gyazo здесь ).

  def videos
    # get current_user's wistia_project_id & authorization token
    @current_user = current_user
    project_id = @current_user.wistia_project_id
    auth_token = "blah"
    request = "https://api.wistia.com/v1/projects/#{project_id}.json?api_password=#{auth_token}"

    @response = HTTP.get(request)

    puts "BEFORE"

    # handle errors (4xx & 5xx)
    # catches client errors and server errors
    # should print out and then LEAVE this entire action. (return)
    if @response.status.client_error? || @response.status.server_error?
      puts "INSIDE"
      render text: "Sorry, error"
      return
    end

    @response = HTTP.get(request).body
    # get embed code for each video using the hashed_id, put in list
    # BUT!!! for some reason it gets here and there's an error 
    # because there is nothing in the response (errors) 
    @video_iframe_urls = JSON.parse(@response)['medias'].map do |p|
      "https://fast.wistia.com/embed/iframe/#{p["hashed_id"]}?version=v1&controlsVisibleOnLoad=true&playerColor=aae3d8"
    end
  end

1 Ответ

1 голос
/ 02 июля 2019
render text: "Sorry, error"

измените эту строку на обычную

render plain: "Sorry, error"

проблема не в

, она НЕ ВЫЙДЕТ из этого действия после ввода блока if.

потому что рендер не поддерживает текстовые параметры. Вы на самом деле код

    if @response.status.client_error? || @response.status.server_error?
      puts "INSIDE"
      render
      return
    end

метод рендеринга отображает имя шаблона по имени действия по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...