2009-12-08 8 views
8

ho il seguente codice:simbolo variabile in oggetto Parametri in rotaie

@profile.update_attributes(params[:xxxx_profile]) 

dove xxxx sta per maschio o femmina. Fondamentalmente il modulo di invio passa o un set di female_profile[foo] o un male_profile[foo] e voglio modificarlo di conseguenza. Supponendo che io abbia una stringa che può essere inserita al posto di xxxx, come faccio a creare dinamicamente questo simbolo?

Grazie.

risposta

12

provare qualcosa di simile:

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

o, si dovrebbe essere in grado di passare nella stringa senza convertire in un simbolo, perché Rails utilizza un HashWithIndifferentAcceess per params: http://api.rubyonrails.org/classes/HashWithIndifferentAccess.html

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

Grazie amico, questo ha funzionato bene per me! – pastullo

3

Capito. Ho pensato che potrebbe essere utile per qualcuno.

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

Si potrebbe anche fare

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