我有一个 Web 应用程序,我想将用户喜欢的样式表存储在会话中,我需要默认将其填充为某个默认值,直到用户未登录等。为此,我使用会话(可能不是最佳解决方案,但它没关系),我需要一个可以初始化这个变量的地方。例子 :
session[:user_theme] = 'default.css'
我不想在过滤某些功能之前每次都检查它,我想初始化一次,然后只通过 UI 进行更改。你能帮我找到更好的地方吗?
我有一个 Web 应用程序,我想将用户喜欢的样式表存储在会话中,我需要默认将其填充为某个默认值,直到用户未登录等。为此,我使用会话(可能不是最佳解决方案,但它没关系),我需要一个可以初始化这个变量的地方。例子 :
session[:user_theme] = 'default.css'
我不想在过滤某些功能之前每次都检查它,我想初始化一次,然后只通过 UI 进行更改。你能帮我找到更好的地方吗?
我认为应用程序控制器是一个好地方。类似的东西应该有效。
class ApplicationController < ActionController::Base
before_filter :set_theme
def set_theme
session[:user_theme] ||= (current_user ? current_user.preferred_theme : 'default.css')
end
end
编辑
哎呀,我确实误读了问题。但我确实同意 Niels,这是最好的放置位置。并且 ||= aerator 只会将其初始化一次。