2013-10-30 76 views
3

如何将变量传递给YAML数组?我把它想象中的工作方式就像它传递给普通字符串,像这样的(一般的例子):将变量传递给YAML数组

en: 
    names: 
    - First %{name} 
    - Second %{name} 
    - Third %{name} 

t('names', name: 'foo')[0] 

但是,这将使文本First %{name}。我知道我可以使用明确的索引键,如name_0:,name_1:等,但我认为YAML数组是一种更清洁的方式,并希望使用它。

回答

4

如果你看一下I18n宝石interpolate function,你会看到,你不能传递值做到这一点,因为如果产量不string插值将没有工作。

但没有什么能够阻止你做到以下几点:

t('names').map{|s| I18n.interpolate(s, name: 'foo')} 
+2

嗯,我明白了......在这种情况下,我还不如'吨(“名称”)[0] .gsub(“%{名}','foo')'因为[基本上是什么插值](https://github.com/svenfuchs/i18n/blob/3e5395036dd138a6dbf1148ecd4f14a56786f9fd/lib/i18n/interpolate/ruby.rb#L21),但在这两个例子中,'t('names.name_0',name:'foo')'更容易。 – zykadelic