轨。未定义的方法`scan':en:符号

时间:2016-01-29 10:03:59

标签: ruby-on-rails rails-i18n

我正在尝试在我的rails应用程序中设置国际化。使用这篇文章 https://lingohub.com/blog/2013/08/internationalization-for-ruby-i18n-gem/

但我有错误:

Failure/Error: http_accept_language.scan(/^[a-z]{2}/).first

     NoMethodError:
       undefined method `scan' for :en:Symbol

我的应用程序控制器:

def set_locale
  I18n.locale = extract_locale_from_accept_language_header
end

private
def extract_locale_from_accept_language_header
  request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
end

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

Ruby字符串将响应#scan,但不响应符号。尝试在标题值上调用#to_s,如下所示:

def extract_locale_from_accept_language_header
  request.env['HTTP_ACCEPT_LANGUAGE'].to_s.scan(/^[a-z]{2}/).first
end