我的date_format
模型中有一个User
字段,其中包含%m/%d/%y
或%d/%m/%y
等字符串。
我希望该应用能够以当前用户在date_format
字段中设置的任何格式显示日期。
我正在尝试这个,但无济于事:
class ApplicationController < ActionController::Base
before_filter :user_date_format, if: :current_user
private
def user_date_format
Date::DATE_FORMATS[:default]=current_user.date_format
end
end
但它不起作用,因为它正在改变所有用户的默认格式,而不仅仅是当前用户。
有什么想法吗?
修改 还有哪些其他方法可以更改默认日期格式,仅适用于当前请求 - 即不会干扰可能存在的任何其他请求。
答案 0 :(得分:2)
Date::DATE_FORMATS[:default]
是一个类变量,它被加载到Rails应用程序内存中并保留在那里,除非更改。当您为用户更改它时,即使该用户注销,它也会保持更改状态。它仅在另一个用户登录时才会更改。因此,您可以定义默认格式,如果没有用户登录,则可以使用该格式。像Smting一样
class ApplicationController < ActionController::Base
before_filter :user_date_format
private
def user_date_format
Date::DATE_FORMATS[:default]= current_user.try(:date_format) || "%d/%m/%y"
end
end
现在,当用户登录时,格式将设置为其设置。如果此用户退出并且匿名用户(或没有日期格式的用户)访问该应用,则格式默认为%d/%m/%y