2009-12-08 9 views
8

Mam następujący kod:Zmienny symbol obiektu Params w szynach

@profile.update_attributes(params[:xxxx_profile]) 

gdzie xxxx albo męskiej lub żeńskiej. Zasadniczo formularz przesłać przechodzi albo zestaw female_profile[foo] lub male_profile[foo] i chcę go odpowiednio zmienić. Zakładając, że mam ciąg znaków, który można wstawić zamiast xxxx, w jaki sposób mogę dynamicznie utworzyć ten symbol?

Dzięki.

Odpowiedz

12

spróbować czegoś jak:

@profile.update_attributes(params["#{gender}_profile".to_sym]) 

lub powinieneś być w stanie przejść w ciągu bez konwersji do symbolu, ponieważ Szyny używa HashWithIndifferentAcceess dla parametrów: http://api.rubyonrails.org/classes/HashWithIndifferentAccess.html

@profile.update_attributes(params["#{gender}_profile"]) 
+0

Dzięki stary, to działało dobrze dla mnie! – pastullo

3

Wyliczyłem to. Pomyślałem, że może to być przydatne dla kogoś.

@profile.update_attributes(params[(@sexstring + "_profile").to_sym]) 
1

Można również wykonać

@profile.update_attributes(params[:"#{gender}_profile"])