2016-01-09 4 views
71

questo codice in rotaie 5Il ": niente" opzione è deprecata e sarà rimosso in Rails 5.1

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

risultati nel seguente avviso deprecazione

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

Come posso risolvere questo problema?

+2

Perché era questo downvoted? – Oleander

+2

probabilmente perché l'avviso di deprecazione ti dice esattamente come risolverlo. – sevenseacat

+18

@sevenseacat No, si riferisce semplicemente a 'head', tutto qui. Devi ancora cercare l'API utilizzata. Si noti che questo è un post in stile Q & A con l'obiettivo di risolvere rapidamente l'avviso di deprecazione di cui sopra senza dover leggere l'API ufficiale. Il post al momento sta pubblicando il numero 1 su google con l'avviso precedente, che era il mio obiettivo iniziale. – Oleander

risposta

101

Secondo the rails source, questo viene fatto sotto il cofano quando passa in nothing: true rotaie 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 

semplice sostituzione nothing: true con body: nil dovrebbe quindi risolvere il problema.

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

alternatively you can usehead :ok

class PagesController < ApplicationController 
    def action 
    head :ok 
    end 
end 
+8

Il metodo 'head' è la sintassi preferita. Molto più pulito – Dan

+2

'render body: nil' ha funzionato per me,' render head: ok' no (ha dato qualche errore di rendering doppio). –

+9

Se desideri modificare i codici di stato, ci sono altre opzioni oltre a ': ok' http://guides.rubyonrails.org/layouts_and_rendering.html#the-status-option –

Problemi correlati