2016-06-20 45 views
6

Uso i comandi dello scaffold per creare i componenti nell'app Rails 4.Rails 4 - parametri forti con scaffold - params.fetch

Recentemente, la terminologia utilizzata nel metodo per impostare i parametri forti è cambiata da params.require a params.fetch e ora ci sono parentesi graffe nel setup.

private 
    # Never trust parameters from the scary internet, only allow the white list through. 
    def engagement_params 
     params.fetch(:engagement, {}) 
    end 

non riesco a trovare alcuna documentazione che illustra la modifica o come usarlo.

Posso ancora scrivere params.fetch (: engagement) .permit (: opinion) nel comando fetch? Non so cosa fare con le parentesi graffe.

Come si completano i parametri forti utilizzando questa nuova forma di espressione?

risposta

4

ho mai imbattuto in questa situazione, ma qui, ho trovato il riferimento al metodo fetch

http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-fetch

Posso ancora scrivere params.fetch (: impegno) .permit (: parere) nella comando di recupero?

Sì, è comunque possibile utilizzare

params.fetch(:engagement).permit(:attributes, :you, :want, :to, :allow) 

non so cosa fare con le parentesi graffe.

Si tratta di un valore di default che verrà restituita se la chiave non è presente o si genera un errore

params.fetch(:engagement) 
#=> *** ActionController::ParameterMissing Exception: param is missing or the value is empty: engagement 

params.fetch(:engagement, {}) 
#=> {} 

params.fetch(:engagement, 'Francesco') 
#=> 'Francesco' 

Come faccio a completare l'params forti utilizzando questa nuova forma di espressione?

params.fetch(:engagement).permit(:attributes, :you, :want, :to, :allow) 
+0

Grazie @Deepak - quale scopo fare le parentesi graffe servono in patibolo? – Mel

+1

@Mel Restituirà l'hash vuoto nel caso in cui non ci sia chiave: impegno nei parametri. controlla sopra Ho modificato la risposta –

+0

Grazie a @Deepak - questo significa che se voglio iniziare ad usare il nuovo modo di impostare parametri forti, dovrei usare il terzo esempio nella tua risposta? – Mel