如何在保存到数据库之前在保存过滤器中运行JavaScript函数来替换某些值?
我已经分类了,哪个用户选择。若用户选择“Auto”,我需要用result替换它,那个么是什么赋予了我JavaScript函数设置的默认浏览器语言呢 下面是JS函数的JavaScript示例- 这是我在网站模型中保存前的过滤器:如何在保存到数据库之前在保存过滤器中运行JavaScript函数来替换某些值?,javascript,ruby-on-rails,before-save,Javascript,Ruby On Rails,Before Save,我已经分类了,哪个用户选择。若用户选择“Auto”,我需要用result替换它,那个么是什么赋予了我JavaScript函数设置的默认浏览器语言呢 下面是JS函数的JavaScript示例- 这是我在网站模型中保存前的过滤器: before_save :auto_language def create website = current_user.websites.new params[:website] if @website.language == "Auto" @website.
before_save :auto_language
def create
website = current_user.websites.new params[:website]
if @website.language == "Auto"
@website.language = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
end
...
#error
undefined local variable or method `request' for #<Website:0x244e1b0>
保存前:自动语言
def创建
网站=当前用户.websites.new参数[:网站]
如果@website.language==“自动”
@website.language=request.env['HTTP_ACCEPT_language'].scan(/^[a-z]{2}/)。首先
结束
...
#错误
未定义的局部变量或方法“请求”#
有人能帮我解决这个麻烦吗?非常感谢您的帮助。您不应该使用Javascript设置默认语言环境 看看这个: 他们使用Ruby来检测区域设置
def set_locale
logger.debug "* Accept-Language: #{request.env['HTTP_ACCEPT_LANGUAGE']}"
I18n.locale = extract_locale_from_accept_language_header
logger.debug "* Locale set to '#{I18n.locale}'"
end
private
def extract_locale_from_accept_language_header
request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
end
如果要获得完整语言,可以使用开关盒:
def full_language_name(lang)
case lang
when 'ru'
return 'Russian'
when 'en'
return 'English'
when 'fr'
return 'French'
else
return 'English'
end
如果这些条件均未得到验证,“else”情况是默认行为。
关键字“return”是可选的
希望这有帮助 我不需要使用本地化,我只需要将正确的网站(模型)语言放入数据库-如果用户选择自动,则为默认浏览器语言。好的,这一行:request.env['HTTP_ACCEPT_language']]。scan(/^[a-z]{2}/)。首先将返回导航器语言的两个字母哦,对不起。我有点傻。。。谢谢。还有一件事——我需要全名。有可能吗?呃,我不认为有可能。。。行
request.env['HTTP\u ACCEPT\u LANGUAGE']
返回fr,fr;q=0.8,在美国;q=0.6,en;q=0.4
对于我的电脑,只需要语言环境和“国家语言”