【发布时间】:2020-08-27 04:53:33
【问题描述】:
我在 Rails 5.2.3 和 Ruby 2.5.1 上工作。在某些时候,当我期望我的字符串数组常量包含一些字符串但它没有时,我发现了一个问题。原来问题与德语变音符号(öäü)有关。
所以我有如下定义的常量:
# coding: utf-8
# frozen_string_literal: true
class MyClass
module MyModule
MY_CONSTANT = [
'Breite in mm',
'Höhe in mm',
'Länge in mm'
].map(&:parameterize).freeze
end
end
我希望常量看起来像 ["breite-in-mm", "hoehe-in-mm", "laenge-in-mm"]
但它被存储为["breite-in-mm", "hohe-in-mm", "lange-in-mm"]。你看,“ö”已被转换为“o”而不是“oe”。 “ä”也一样。现在是“a”,而不是“ae”。
它在生产、RSpec 测试中甚至在我启动 Rails 控制台并调用此常量时都以这种方式工作。但是,当我使用相同的代码从 Rails 控制台定义一个新常量时,字符串已成功转换为我所期望的,即["breite-in-mm", "hoehe-in-mm", "laenge-in-mm"]
我可以轻松摆脱这个parameterize 方法,只需在需要时输入字符串。也许我将不得不这样做。但我真的很好奇为什么会发生这一切,我自己也找不到答案。
所以提前感谢您的任何想法。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-5