2016-05-06 1 views
2

Ich bin Aktualisierung 4.2 zu den Schienen und diese deprecation Warnung zu erhalten:URL Helfer mit String-Schlüsseln veraltet aber params verwendet sie als Zeichenfolge standardmäßig

Calling URL helpers with string keys controller, action is deprecated. Use symbols instead. 

In der Steuerung ich die params bin Wiederverwendung einige Links erstellen mit die gleichen Parameter wie folgt aus:

@csv_prms = params 
@csv_prms[:format] = :csv 
... 

In der Ansicht, die ich tun:

= link_to 'CSV', report_path(@csv_prms) 

Jetzt bemerkte ich, dass Standardmäßig sind die Aktion und Controller in Params Zeichenketten anstelle von Symbolen. Ist das nicht unlogisch, da sie nicht mehr in URL-Helfern verwendet werden sollen?

Antwort

3

Im Allgemeinen sollten Sie nicht durch params zwischen den Anfragen übergeben (siehe params.merge and cross site scripting), sondern stattdessen die params schneiden Sie für Ihre neue Anfrage benötigen und die neuen verschmelzen:

@csv_prms = params.slice (: param1 ,:: param2) .merge (format:: csv)

Das würde entfernen: controller und: action von den params, die für die Erstellung eines Links überhaupt nicht benötigt werden, weil Ihre link_to-Anweisungen konsequent mit dem Link verknüpft sein sollten Aktion, die Sie wollen (anstatt den Benutzer mit Parametern herumfummeln zu lassen, damit Ihre Seite Links zu was auch immer erstellen kann).

+1

Am Ende getan: @csv_prms = params.except ('controller', 'action') Andere Parameter sind bereits durch Genehmigung geprüft – rept

Verwandte Themen