【发布时间】:2018-11-22 03:26:09
【问题描述】:
我想在 Ruby On Rails 中操作以下语言环境 .yml 文件:
fr:
back: Retour
signup: Inscription
helpers:
submit:
create: "Créer votre %{model}"
hello:
world: "Bonjour le monde"
所以我在我的控制器中解析它:
@yml_hash = YAML.load_file("config/locales/en.yml")
然后我在 html.erb 文件中使用以下帮助程序对其进行处理:
module TranslationHelper
def render_hash(hash)
return ihash(hash)
end
def ihash(h, key = [], result = [])
h.each_pair do |k,v|
if v.is_a?(Hash)
key << k
ihash(v, key, result)
else
result << {full_key: key, key: k, value: v}
end
end
result
end
end
它会返回输出:
[{:full_key=>["fr", "helpers", "submit", "hello"], :key=>"back",
:value=>"Retour"},
{:full_key=>["fr", "helpers", "submit", "hello"], :key=>"signup",
:value=>"Inscription"},
{:full_key=>["fr", "helpers", "submit", "hello"], :key=>"create",
:value=>"Créer votre %{model}"},
{:full_key=>["fr", "helpers", "submit", "hello"], :key=>"world",
:value=>"Bonjour le monde"}]
但实际上我的目标是在散列中拥有一个值的完整键,如下所示:
[{:full_key=>["fr"], :key=>"back", :value=>"Retour"},
{:full_key=>["fr"], :key=>"signup", :value=>"Inscription"},
{:full_key=>["fr", "helpers", "submit"], :key=>"create", :value=>"Créer votre %{model}"},
{:full_key=>["fr", "hello"], :key=>"world", :value=>"Bonjour le monde"}]
有没有什么方法可以在我的函数中处理哈希以获得那种结果?
谢谢。
【问题讨论】:
标签: ruby-on-rails ruby recursion hash yaml