Opcja „: nic” jest przestarzała i zostanie usunięta w Railsach 5.1


108

Ten kod w szynach 5

class PagesController < ApplicationController
  def action
    render nothing: true
  end
end

powoduje wyświetlenie następującego ostrzeżenia o wycofaniu

DEPRECATION WARNING: :nothing` option is deprecated and will be removed in Rails 5.1. Use `head` method to respond with empty response body.

Jak to naprawić?


2
Dlaczego ten głos został odrzucony?
Linus Oleander,

3
prawdopodobnie dlatego, że ostrzeżenie o zaniechaniu mówi dokładnie, jak to naprawić.
sevenseacat

24
@sevenseacat Nie, to tylko odnosi się do head, to wszystko. Nadal musisz sprawdzić używany interfejs API. Zwróć uwagę, że jest to post w stylu pytań i odpowiedzi, którego celem jest szybkie rozwiązanie powyższego ostrzeżenia o wycofaniu bez konieczności czytania przez oficjalny interfejs API. Ten post jest obecnie na pierwszym miejscu w Google na powyższe ostrzeżenie, co było moim początkowym celem.
Linus Oleander

Odpowiedzi:


171

Według źródła szyn odbywa się to pod maską podczas przejazdu przez nothing: trueszyny 5.

if options.delete(:nothing)
  ActiveSupport::Deprecation.warn("`:nothing` option is deprecated and will be removed in Rails 5.1. Use `head` method to respond with empty response body.")
  options[:body] = nil
end

Wystarczy zastępując nothing: trueze body: nilpowinno rozwiązać problem.

class PagesController < ApplicationController
  def action
    render body: nil
  end
end

alternatywnie możesz użyć head :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end

16
headMetoda jest korzystna składni. Dużo czystsze.
Dan

3
render body: nilzadziałało dla mnie, render head :oknie (spowodowało to podwójny błąd renderowania).
Fellow Stranger

13
Jeśli chcesz zmienić kody statusu, są opcje inne niż tylko :ok guide.rubyonrails.org/…
TJ Biddle

2
innym przykładem może być head :unauthorizedzwrócenie kodu statusu 401
Jirapong

14
@FellowStranger, to nie jest render head: :ok, to jest head :ok. Nie render. Ja też z tym walczyłem.
ben
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.