Ruby on rails 在Rails中将删节语言转换为完整语言(英语)的更好方法是什么?

Ruby on rails 在Rails中将删节语言转换为完整语言(英语)的更好方法是什么?,ruby-on-rails,Ruby On Rails,我需要从缩写中提取全称 我试着用简单的方法来做(不起作用) 有什么更好的方法可以做到这一点?它不起作用,因为当赋值运算符应该是比较运算符时,您有一个比较运算符。看看这个: def long(lang) if lang == "en" lang = "English" elsif lang == "ru" lang = "Russian" ... end lang end 或者你可以让它更干净更短 def long lang map = {en: 'En

我需要从缩写中提取全称

我试着用简单的方法来做(不起作用)


有什么更好的方法可以做到这一点?

它不起作用,因为当赋值运算符应该是比较运算符时,您有一个比较运算符。看看这个:

def long(lang)
  if lang == "en"
    lang = "English"
  elsif lang == "ru"
    lang = "Russian"
  ...
  end

  lang
end
或者你可以让它更干净更短

def long lang
  map = {en: 'English',
    ru: 'Russian'}
  map[lang.to_sym]
end
甚至更短(通过消除温度变量)


它不起作用,因为您有一个比较运算符,而赋值运算符应该是。看看这个:

def long(lang)
  if lang == "en"
    lang = "English"
  elsif lang == "ru"
    lang = "Russian"
  ...
  end

  lang
end
或者你可以让它更干净更短

def long lang
  map = {en: 'English',
    ru: 'Russian'}
  map[lang.to_sym]
end
甚至更短(通过消除温度变量)


I18n
当前语言环境、可用语言环境等是符号,而不是字符串。所以你会有

def long(language)
  case language
  when :en
    "English (symbol)"
  when "en"
    "English (string)"
  else
    "something else"
  end
end

>> long(I18n.default_locale)
=> "English (symbol)"
如果你想按照你的意愿去做,你必须先把它转换成一个字符串

def long(language)
  case language.to_s
  when :en
    "English (symbol)"
  when "en"
    "English (string)"
  else
    "something else"
  end
end

>> long(I18n.default_locale)
=> "English (string)"

I18n
当前语言环境、可用语言环境等是符号,而不是字符串。所以你会有

def long(language)
  case language
  when :en
    "English (symbol)"
  when "en"
    "English (string)"
  else
    "something else"
  end
end

>> long(I18n.default_locale)
=> "English (symbol)"
如果你想按照你的意愿去做,你必须先把它转换成一个字符串

def long(language)
  case language.to_s
  when :en
    "English (symbol)"
  when "en"
    "English (string)"
  else
    "something else"
  end
end

>> long(I18n.default_locale)
=> "English (string)"

@Segio,当我将“en”传递到方法中时,它将给我“English”?应该这样做,是的。为什么不测试一下呢?我的代码
if@website.language==“Auto”@website.language=long”request.env['HTTP\u ACCEPT\u language'].scan(/^[a-z]{2}/)。首先“
我做错了什么。@Segio,当我将'en'传递到方法中时,它会给我'English'?应该这样做,是的。你为什么不测试一下呢?我的代码
if@website.language==“Auto”@website.language=long”request.env['HTTP\u ACCEPT\u language']。扫描(/^[a-z]{2}/)。首先“
我做错了什么。