0

我已经分类,用户选择。如果用户选择“自动”,我需要用结果替换它,这是什么给了我的 JavaScript 功能 - 设置默认浏览器语言。

这是 JS 函数的 JavaScript 示例 - http://fiddle.jshell.net/xCgsb/

这是我在网站模型中的 before_save 过滤器:

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>

有人可以帮我解决这个问题吗?任何帮助表示赞赏。

4

1 回答 1

1

您不应该使用 Javascript 来设置您的默认语言环境。

看看这个:

http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-client-supplied-information

他们使用 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

如果你想获得完整的语言,你可以使用 switch case:

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”是可选的。

希望这可以帮助!

于 2012-10-01T13:22:15.177 回答