Wie überschreibt man [] Klammern in Ruby?

8

Ich schreibe ein Ajax-Anfrageformular mit Ruby on Rails mit einem collection_select -Tag, das folgendermaßen aussieht:

%Vor%

Ruby erstellt dann ein HTML-Auswahl-Tag mit id = "Jobs_clearance" und name = "Jobs[clearance]"

Ich möchte den Parameter an meinen Controller senden, der so aussieht:

%Vor%

Ruby liest leider nur ":Jobs" als Symbol anstelle von ":Jobs[clearance]"
Gibt es eine Möglichkeit, den [] zu entkommen? Backslash funktioniert nicht.

    
Elie Teyssedou 09.06.2009, 16:15
quelle

3 Antworten

10

Sie müssen params[:Jobs][:clearance]

verwenden

params ist ein Hash aller Anforderungsparameter. Aber params[:Jobs ] ist auch ein Hash aller: Jobs-Parameter. Der Aufruf von params[:Jobs][:clearance] ruft die Methode [] für das Objekt params[:Jobs] auf, wobei :clearance in als Parameter übergeben wird.

    
kmorris511 09.06.2009, 16:17
quelle
49

kmorris hat Ihr Problem gelöst (sehr gut) aber ich würde gerne Ihre Frage beantworten: Du kannst die Operatoren [] und [] = überschreiben, weil sie Methoden sind (wie fast alles), aber du solltest gut darüber nachdenken, was du tust, weil du jede Menge Dinge brechen kannst.

%Vor%     
Oinak 10.06.2009 09:01
quelle
0

@Deutsch, habe versucht, eine Antwort auf deine Frage zu bekommen.

%Vor%

Hoffen Sie, dass Sie das verlangen. Einen Versuch für dich gegeben

    
This is me 23.11.2014 16:25
quelle