2010-12-12 13 views
1

ich die Session-Methode von Ruby on Rails benutze so, dass ich eine Sitzung [: user_params] Hash wie folgt aus:Wie kann auf eine multidimensionale Hash-Sitzung zugegriffen werden?

password_confirmation: "test" 
password: test 
email: [email protected] 

ich einfach zugreifen können, dass die Syntax Sitzung mit [: user_params] in meinem Datei ansehen.

Jetzt möchte ich nur Zugriff auf die 'E-Mail' Parameter, aber versuchen, session [: user_params] [: email] zu verwenden, bekomme ich immer einen leeren Wert. Wie kann ich auf diesen Wert zugreifen?

+0

Ich glaube nicht, dass Sitzungen andere Werte als Strings unterstützen, aber ich bin mir nicht sicher. Aber zu viel Information in einer Sitzung zu speichern ist nie eine gute Sache. Versuchen Sie, Ihren Hash zu serialisieren, wenn Sie müssen. – iain

Antwort

2

Sie könnten versuchen, session[:user_params]['email']. Off Hand bin ich nicht sicher, ob Rails den gesamten Sitzungshash als HashWithIndifferentAccess serialisieren/deserialisieren wird oder nicht.

1

Ich bin nicht sicher, wie Sie den Hash einrichten, die Sie speichern in: user_params, aber das ist, wie ich es tun würde, und es scheint zu funktionieren:

puts " email: '#{session[:user_params][:email]}'" 

session[:user_params] ||= {} 
session[:user_params][:password_confirmation] = "test" 
session[:user_params][:password] = "test" 
session[:user_params][:email] = "[email protected]" 

Wenn Sie diesen Code nach innen setzen eine Controller-Aktion beim ersten Mal sehen Sie "" für die E-Mail. Das zweite Mal wird "[email protected]" für die E-Mail angezeigt. Ich hoffe, das hilft.

+0

Danke, aber das hilft mir nicht. Ich möchte einfach die E-Mail-Adresse in meiner Ansicht anzeigen, etwa so: <% = session [: user_params] [: email]%>. – user502052

+0

Nachdem Sie die E-Mail von einem Controller in die Sitzung eingegeben haben, können Sie in der Ansicht mit dem gerade geposteten Code darauf zugreifen: <% = session [: user_params] [: email]%>. – nimblegorilla

+0

Was ich anstrebte, war <% = session [: pjt_user_params] ["email"]%> was ich denke, ist der kürzeste/einfachste Weg, um zu bekommen, was ich will. – user502052

Verwandte Themen