如何在会话中存储变量?
How to store a variable in session?
我正在开发的应用程序由用户组成,每个用户可以拥有多个配置文件(它应该像 "family account")。当用户登录时,他们可以选择他们想要使用的配置文件。
我将此信息保存在 class 变量中,但它不起作用。如果用户从另一个浏览器或设备登录并选择另一个配置文件,则它在任何地方都会发生变化。这个想法是让不同的人访问同一个帐户并能够选择不同的配置文件,而无需更改为其他人。
我研究了一下,发现它应该保存在一个会话中,但我不知道该怎么做。我还想知道如何修改它以及如何从控制器和/或视图访问它(如果它保存在会话中)。
个人资料具有:"user_id",该个人资料的所有者用户,以及 "name",由用户在创建个人资料时决定。
我不知道这是否有帮助,但我正在使用 gem "Devise"。如果需要任何其他信息,请告诉我,我会立即编辑 post。
我正在分享下面的代码,这样您就可以看到我到目前为止所做的事情:
application_controller.rb
@@current_profile = nil
def set_current_profile
@@current_profile = Profile.find(params[:id])
puts "#{@@current_profile.name}" # debug
end
def return_current_profile
return @@current_profile
end
profile_controller.rb
def set_current_profile
super
redirect_to main_main_page_path
end
def return_current_profile
super
end
helper_method :return_current_profile
profile_select.html.erb
<div class="container">
<div class="list-group col-md-4 offset-md-4" align="center">
<% @profiles.all.each do |profile| %>
<%= link_to profile.name, profile, method: :set_current_profile, class: "list-group-item list-group-item-action" %>
<% end %>
</div>
</div>
routes.rb
post 'profiles/:id', to: 'profiles#set_current_profile', as: :set_current_profile
提前致谢。
在 rails 中,您可以创建新会话并像这样获取会话:
# set the session
session[:key] = 'value'
# get the session
session[:key] #=> 'value'
如果你想在会话中保存数组,你可以这样做:
# save the ids
session[:available_user_ids] = available_user_ids.join(',')
# get the ids
session[:available_user_ids].split(',') #> [1,2,3]
我正在开发的应用程序由用户组成,每个用户可以拥有多个配置文件(它应该像 "family account")。当用户登录时,他们可以选择他们想要使用的配置文件。
我将此信息保存在 class 变量中,但它不起作用。如果用户从另一个浏览器或设备登录并选择另一个配置文件,则它在任何地方都会发生变化。这个想法是让不同的人访问同一个帐户并能够选择不同的配置文件,而无需更改为其他人。
我研究了一下,发现它应该保存在一个会话中,但我不知道该怎么做。我还想知道如何修改它以及如何从控制器和/或视图访问它(如果它保存在会话中)。
个人资料具有:"user_id",该个人资料的所有者用户,以及 "name",由用户在创建个人资料时决定。
我不知道这是否有帮助,但我正在使用 gem "Devise"。如果需要任何其他信息,请告诉我,我会立即编辑 post。
我正在分享下面的代码,这样您就可以看到我到目前为止所做的事情:
application_controller.rb
@@current_profile = nil
def set_current_profile
@@current_profile = Profile.find(params[:id])
puts "#{@@current_profile.name}" # debug
end
def return_current_profile
return @@current_profile
end
profile_controller.rb
def set_current_profile
super
redirect_to main_main_page_path
end
def return_current_profile
super
end
helper_method :return_current_profile
profile_select.html.erb
<div class="container">
<div class="list-group col-md-4 offset-md-4" align="center">
<% @profiles.all.each do |profile| %>
<%= link_to profile.name, profile, method: :set_current_profile, class: "list-group-item list-group-item-action" %>
<% end %>
</div>
</div>
routes.rb
post 'profiles/:id', to: 'profiles#set_current_profile', as: :set_current_profile
提前致谢。
在 rails 中,您可以创建新会话并像这样获取会话:
# set the session
session[:key] = 'value'
# get the session
session[:key] #=> 'value'
如果你想在会话中保存数组,你可以这样做:
# save the ids
session[:available_user_ids] = available_user_ids.join(',')
# get the ids
session[:available_user_ids].split(',') #> [1,2,3]