2016-06-20 21 views
6

Ich benutze Scaffold-Befehle, um meine Komponenten in meiner Rails 4 App zu machen.Rails 4 - starke Parameter mit Gerüst - params.fetch

Kürzlich hat sich die in der Methode zum Setzen der starken Parameter verwendete Terminologie von params.require zu params.fetch geändert und jetzt gibt es geschweifte Klammern im Setup.

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

Ich kann keine Dokumentation finden, die die Änderung erklärt oder wie man sie benutzt.

Kann ich noch params.fetch (: engagement) .permit (: opinion) in den Befehl fetch schreiben? Ich weiß nicht, was ich mit den geschweiften Klammern machen soll.

Wie vervollständige ich die starken params mit dieser neuen Ausdrucksform?

Antwort

4

kam ich nie diese Situation über, aber hier fand ich den Hinweis auf fetch Methode

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

Kann ich params.fetch schreiben noch (: Engagement) .permit (: Meinung) in die Befehl holen?

Ja, können Sie immer noch

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

Ich weiß nicht verwenden, was mit den geschweiften Klammern zu tun.

Es ist ein Standardwert, der zurückgegeben wird, wenn Schlüssel nicht vorhanden ist, oder es wird einen Fehler

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

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

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

werfen, wie ich die starken params Sie vervollständige mit dieser neuen Form des Ausdrucks?

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

Dank @Deepak - wozu sind die geschweiften Klammern in dem Gerüst dienen? – Mel

+1

@Mel Es wird Ihnen leerer Hash zurückgeben, falls kein Schlüssel vorhanden ist: Engagement in Params. check oben Ich habe die Antwort bearbeitet –

+0

Dank @Deepak - bedeutet das, wenn ich die neue Art der Einstellung von starken params verwenden möchte, sollte ich das dritte Beispiel in Ihrer Antwort verwenden? – Mel