Rubocop: литерал, используемый в пустом контексте. [Lint / Void]

У меня возникли проблемы с правильным форматированием приведенного ниже кода после проверки Rubocop в моем приложении Ruby on Rails. Я получаю ошибки:

Rubocop: Literal [: success, JSON.parse (response.to_str)] используется в пустом контексте. [Lint / Void]

а также

Rubocop: Literal [: unprocessable_entity, JSON.parse (response.to_str)], используемый в пустом контексте. [Lint / Void].

Я просто не могу понять, в чем проблема с кодом и как ее исправить.

case response.code
when 200
  [:success, JSON.parse(response.to_str)]
  redirect_to root_url, notice: 'Logged in!'
when 422
  [:unprocessable_entity, JSON.parse(response.to_str)]
  flash.now[:alert] = 'Email or password is invalid'
  render 'new'
else
  raise "Invalid response #{response.to_str} received."
end

person Promise Preston    schedule 23.08.2019    source источник


Ответы (1)


Вы не используете этот [:success, JSON.parse(response.to_str)] и этот [:unprocessable_entity, JSON.parse(response.to_str)] в своем коде. Либо удалите его, либо назначьте в переменной, но назначение его в переменной и неиспользование этой переменной может снова вызвать предупреждение.

Вам следует удалить код, который вы не используете. Попробуй это:

case response.code
when 200
  redirect_to root_url, notice: 'Logged in!'
when 422
  flash.now[:alert] = 'Email or password is invalid'
  render 'new'
else
  raise "Invalid response #{response.to_str} received."
end

или попробуйте это:

case response.code
when 200
  @success = [:success, JSON.parse(response.to_str)]
  redirect_to root_url, notice: 'Logged in!'
when 422
  @error = [:unprocessable_entity, JSON.parse(response.to_str)]
  flash.now[:alert] = 'Email or password is invalid'
  render 'new'
else
  raise "Invalid response #{response.to_str} received."
end

Сообщите мне, сработало ли это.

person NN796    schedule 23.08.2019